From b6a2f15e25349145c5f0f4737d4f5ef1cd8b6ad2 Mon Sep 17 00:00:00 2001 From: wessels <> Date: Thu, 15 Apr 1999 12:14:50 +0000 Subject: [PATCH] SQUID_2_2 branch merge --- CREDITS | 41 +- ChangeLog | 45 + configure | 469 +++++----- configure.in | 49 +- errors/Bulgarian/ERR_FTP_FORBIDDEN | 18 + errors/Bulgarian/ERR_FTP_NOT_FOUND | 21 + errors/Bulgarian/ERR_FTP_UNAVAILABLE | 17 + errors/Czech/ERR_FTP_FORBIDDEN | 18 + errors/Czech/ERR_FTP_NOT_FOUND | 21 + errors/Czech/ERR_FTP_UNAVAILABLE | 17 + errors/Dutch/ERR_FTP_FORBIDDEN | 18 + errors/Dutch/ERR_FTP_NOT_FOUND | 21 + errors/Dutch/ERR_FTP_UNAVAILABLE | 17 + errors/English/ERR_FTP_FAILURE | 4 - errors/English/ERR_FTP_FORBIDDEN | 18 + errors/English/ERR_FTP_NOT_FOUND | 21 + errors/English/ERR_FTP_UNAVAILABLE | 17 + errors/Estonian/ERR_FTP_FORBIDDEN | 16 + errors/Estonian/ERR_FTP_NOT_FOUND | 20 + errors/Estonian/ERR_FTP_UNAVAILABLE | 17 + errors/Estonian/ERR_SHUTTING_DOWN | 16 +- errors/Estonian/ERR_ZERO_SIZE_OBJECT | 42 +- errors/French/ERR_FTP_FORBIDDEN | 18 + errors/French/ERR_FTP_NOT_FOUND | 21 + errors/French/ERR_FTP_UNAVAILABLE | 17 + errors/German/ERR_FTP_FORBIDDEN | 18 + errors/German/ERR_FTP_NOT_FOUND | 21 + errors/German/ERR_FTP_UNAVAILABLE | 17 + errors/Hungarian/ERR_CANNOT_FORWARD | 2 +- errors/Hungarian/ERR_FTP_FORBIDDEN | 18 + errors/Hungarian/ERR_FTP_NOT_FOUND | 21 + errors/Hungarian/ERR_FTP_UNAVAILABLE | 17 + errors/Hungarian/ERR_ONLY_IF_CACHED_MISS | 2 +- errors/Hungarian/ERR_SHUTTING_DOWN | 20 +- errors/Italian/ERR_FTP_FORBIDDEN | 18 + errors/Italian/ERR_FTP_NOT_FOUND | 21 + errors/Italian/ERR_FTP_UNAVAILABLE | 17 + errors/Japanese/ERR_FTP_FORBIDDEN | 18 + errors/Japanese/ERR_FTP_NOT_FOUND | 21 + errors/Japanese/ERR_FTP_UNAVAILABLE | 17 + errors/Polish/ERR_FTP_FORBIDDEN | 18 + errors/Polish/ERR_FTP_NOT_FOUND | 21 + errors/Polish/ERR_FTP_UNAVAILABLE | 17 + errors/Portuguese/ERR_FTP_FORBIDDEN | 18 + errors/Portuguese/ERR_FTP_NOT_FOUND | 21 + errors/Portuguese/ERR_FTP_UNAVAILABLE | 17 + errors/Portuguese/ERR_SHUTTING_DOWN | 21 +- errors/Russian-1251/ERR_FTP_FORBIDDEN | 18 + errors/Russian-1251/ERR_FTP_NOT_FOUND | 21 + errors/Russian-1251/ERR_FTP_UNAVAILABLE | 17 + errors/Russian-koi8-r/ERR_FTP_FORBIDDEN | 18 + errors/Russian-koi8-r/ERR_FTP_NOT_FOUND | 21 + errors/Russian-koi8-r/ERR_FTP_UNAVAILABLE | 17 + errors/Slovak/ERR_FTP_FORBIDDEN | 18 + errors/Slovak/ERR_FTP_NOT_FOUND | 21 + errors/Slovak/ERR_FTP_UNAVAILABLE | 17 + errors/Spanish/ERR_FTP_FORBIDDEN | 18 + errors/Spanish/ERR_FTP_NOT_FOUND | 21 + errors/Spanish/ERR_FTP_UNAVAILABLE | 17 + errors/Traditional_Chinese/ERR_FTP_FORBIDDEN | 18 + errors/Traditional_Chinese/ERR_FTP_NOT_FOUND | 21 + .../Traditional_Chinese/ERR_FTP_UNAVAILABLE | 17 + errors/Turkish/ERR_FTP_FORBIDDEN | 18 + errors/Turkish/ERR_FTP_NOT_FOUND | 21 + errors/Turkish/ERR_FTP_UNAVAILABLE | 17 + include/autoconf.h.in | 14 +- include/cache_snmp.h | 23 +- include/version.h | 4 +- lib/inet_ntoa.c | 58 ++ lib/rfc1123.c | 10 +- lib/snprintf.c | 12 +- lib/util.c | 4 +- src/HttpHdrExtField.cc | 4 +- src/HttpHeader.cc | 6 +- src/HttpHeaderTools.cc | 12 +- src/HttpStatusLine.cc | 4 +- src/acl.cc | 29 +- src/asn.cc | 6 +- src/cache_cf.cc | 19 +- src/cachemgr.cc | 15 +- src/cf.data.pre | 37 +- src/cf_gen.cc | 8 +- src/client.cc | 4 +- src/client_db.cc | 36 +- src/client_side.cc | 74 +- src/debug.cc | 10 +- src/defines.h | 4 +- src/delay_pools.cc | 88 +- src/disk.cc | 4 +- src/enums.h | 5 +- src/fd.cc | 4 +- src/forward.cc | 34 +- src/ftp.cc | 56 +- src/globals.h | 3 +- src/http.cc | 88 +- src/ident.cc | 4 +- src/main.cc | 40 +- src/mime.cc | 22 +- src/neighbors.cc | 23 +- src/net_db.cc | 4 +- src/pinger.cc | 27 +- src/protos.h | 28 +- src/snmp_agent.cc | 32 +- src/snmp_core.cc | 845 +++++++++--------- src/squid.h | 12 +- src/ssl.cc | 6 +- src/stat.cc | 14 +- src/store_client.cc | 10 +- src/store_dir.cc | 6 +- src/structs.h | 7 +- src/tunnel.cc | 6 +- src/url.cc | 4 +- src/urn.cc | 7 +- test-suite/tcp-banger2.c | 44 +- test-suite/tcp-banger3.c | 2 + 115 files changed, 2535 insertions(+), 999 deletions(-) create mode 100644 errors/Bulgarian/ERR_FTP_FORBIDDEN create mode 100644 errors/Bulgarian/ERR_FTP_NOT_FOUND create mode 100644 errors/Bulgarian/ERR_FTP_UNAVAILABLE create mode 100644 errors/Czech/ERR_FTP_FORBIDDEN create mode 100644 errors/Czech/ERR_FTP_NOT_FOUND create mode 100644 errors/Czech/ERR_FTP_UNAVAILABLE create mode 100644 errors/Dutch/ERR_FTP_FORBIDDEN create mode 100644 errors/Dutch/ERR_FTP_NOT_FOUND create mode 100644 errors/Dutch/ERR_FTP_UNAVAILABLE create mode 100644 errors/English/ERR_FTP_FORBIDDEN create mode 100644 errors/English/ERR_FTP_NOT_FOUND create mode 100644 errors/English/ERR_FTP_UNAVAILABLE create mode 100644 errors/Estonian/ERR_FTP_FORBIDDEN create mode 100644 errors/Estonian/ERR_FTP_NOT_FOUND create mode 100644 errors/Estonian/ERR_FTP_UNAVAILABLE create mode 100644 errors/French/ERR_FTP_FORBIDDEN create mode 100644 errors/French/ERR_FTP_NOT_FOUND create mode 100644 errors/French/ERR_FTP_UNAVAILABLE create mode 100644 errors/German/ERR_FTP_FORBIDDEN create mode 100644 errors/German/ERR_FTP_NOT_FOUND create mode 100644 errors/German/ERR_FTP_UNAVAILABLE create mode 100644 errors/Hungarian/ERR_FTP_FORBIDDEN create mode 100644 errors/Hungarian/ERR_FTP_NOT_FOUND create mode 100644 errors/Hungarian/ERR_FTP_UNAVAILABLE create mode 100644 errors/Italian/ERR_FTP_FORBIDDEN create mode 100644 errors/Italian/ERR_FTP_NOT_FOUND create mode 100644 errors/Italian/ERR_FTP_UNAVAILABLE create mode 100644 errors/Japanese/ERR_FTP_FORBIDDEN create mode 100644 errors/Japanese/ERR_FTP_NOT_FOUND create mode 100644 errors/Japanese/ERR_FTP_UNAVAILABLE create mode 100644 errors/Polish/ERR_FTP_FORBIDDEN create mode 100644 errors/Polish/ERR_FTP_NOT_FOUND create mode 100644 errors/Polish/ERR_FTP_UNAVAILABLE create mode 100644 errors/Portuguese/ERR_FTP_FORBIDDEN create mode 100644 errors/Portuguese/ERR_FTP_NOT_FOUND create mode 100644 errors/Portuguese/ERR_FTP_UNAVAILABLE create mode 100644 errors/Russian-1251/ERR_FTP_FORBIDDEN create mode 100644 errors/Russian-1251/ERR_FTP_NOT_FOUND create mode 100644 errors/Russian-1251/ERR_FTP_UNAVAILABLE create mode 100644 errors/Russian-koi8-r/ERR_FTP_FORBIDDEN create mode 100644 errors/Russian-koi8-r/ERR_FTP_NOT_FOUND create mode 100644 errors/Russian-koi8-r/ERR_FTP_UNAVAILABLE create mode 100644 errors/Slovak/ERR_FTP_FORBIDDEN create mode 100644 errors/Slovak/ERR_FTP_NOT_FOUND create mode 100644 errors/Slovak/ERR_FTP_UNAVAILABLE create mode 100644 errors/Spanish/ERR_FTP_FORBIDDEN create mode 100644 errors/Spanish/ERR_FTP_NOT_FOUND create mode 100644 errors/Spanish/ERR_FTP_UNAVAILABLE create mode 100644 errors/Traditional_Chinese/ERR_FTP_FORBIDDEN create mode 100644 errors/Traditional_Chinese/ERR_FTP_NOT_FOUND create mode 100644 errors/Traditional_Chinese/ERR_FTP_UNAVAILABLE create mode 100644 errors/Turkish/ERR_FTP_FORBIDDEN create mode 100644 errors/Turkish/ERR_FTP_NOT_FOUND create mode 100644 errors/Turkish/ERR_FTP_UNAVAILABLE create mode 100644 lib/inet_ntoa.c diff --git a/CREDITS b/CREDITS index bef4052f3c..7171213e44 100644 --- a/CREDITS +++ b/CREDITS @@ -1,4 +1,4 @@ -$Id: CREDITS,v 1.4 1998/12/11 20:09:33 wessels Exp $ +$Id: CREDITS,v 1.5 1999/04/15 06:14:50 wessels Exp $ ============================================================================== @@ -254,3 +254,42 @@ mcast_encode() in src/access_log.c is derived from Mark Atkinson's http://www.io.com/~paulhart/game/algorithms/tea.html ============================================================================== + +lib/inet_ntoa.c: + +/* + * Copyright (c) 1983 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +static char sccsid[] = "@(#)inet_ntoa.c 5.6 (Berkeley) 2/24/91"; + +============================================================================== diff --git a/ChangeLog b/ChangeLog index 098af147a1..3cd3a40510 100644 --- a/ChangeLog +++ b/ChangeLog @@ -106,6 +106,45 @@ Changes to Squid-2.2 (): the number of open disk FD's is above the 'max_open_disk_fds' limit. Otherwise, a very loaded cache will end up with all disk files open for reading, and none for writing. + - Added lib/inet_ntoa.c from BSD Unix for systems that have + broken inet_ntoa(). (Erik Hofman). + - Added more specific FTP error messages for "permission + denied, "file not found," and "service unavailable." + (Tony Finch) + - Added xisspace(), xisdigit(), etc, macros to cast function + args and eliminate compiler warnings. + - Fixed case-sensitive comparisons of domain names (Henrik + Nordstrom). + - Added proxy-authentication to cachemgr.cgi's requests + (Henrik Nordstrom). + - Changed Squid to *truncate* rather than *unlink* purged + swap files. Can be reversed by undefining + USE_TRUNCATE_NOT_UNLINK in src/defines.h. + - Changed internal icon headers to use Cache-control + Max-age instead of Expires. + - Changed storeMaintainSwapSpace behavior to be adjusted + smoothly, instead of discretely, between store_swap_low + and store_swap_high. This includes the number of + objects to scan, number to remove, and time until the + next storeMaintainSwapSpace event. + - Fixed a quick_abort bug that incorrectly calculated + content lengths. + - Added getpwnam() auth module from Erik Hofman. + - Added 'coredump_dir' option. + - Fixed a peerDestroy() assertion that required peer->digest + to be NULL at the end of peerDestroy(). + - configure script now automatically enables dlmalloc for + Solaris/x86. + - configure enables poll() on linux 2.2 and later (Henrik). + - Icon files are now distributed in binary format, install + will not need to run 'sh' and 'uudecode'. + - Fixed some bugs with large responses (>READ_AHEAD_GAP) and + re-forwarding requests and ENTRY_FWD_HDR_WAIT. + fwdCheckDeferRead() will NOT defer reading if the + ENTRY_FWD_HDR_WAIT bit is set. + - Fixed a "F->flags.open" assertion for aborted FTP PUT's. + - Fixed a (double) cast problem that caused statAvgTick() + events to be added as fast as possible. Changes to Squid-2.1 (November 16, 1998): @@ -647,6 +686,12 @@ Changes to squid-1.2.beta20 (April 24, 1998): - Fixed "huge 304 reply" loop bug. - Fixed --enable-splaytree compile bugs. - Removed ASN lookup code in peer_select.c. + - Added warnings if ACL code detects subdomains in SPLAY + trees. + - Rewrote some bits of httpRequestFree() to eliminate + possible bugs that could cause an "e->lock_count" asseertion. + - Added value/bounds checking to _db_init() when setting + the debugLevels[] array. Changes to squid-1.2.beta19 (Apr 8, 1998): diff --git a/configure b/configure index 8fe7711b48..b02d844adc 100755 --- a/configure +++ b/configure @@ -591,7 +591,7 @@ fi -# From configure.in Revision: 1.167 +# From configure.in Revision: 1.168 ac_aux_dir= for ac_dir in cfgaux $srcdir/cfgaux; do if test -f $ac_dir/install-sh; then @@ -887,6 +887,7 @@ if test -z "$PRESET_CFLAGS"; then ;; alpha-dec-osf4.*) # Mogul says DEC compilers take both -g and -O2 + CFLAGS=`echo $CFLAGS | sed -e 's/-g/-g3/'` CFLAGS="$CFLAGS -O2" ;; *) @@ -912,6 +913,15 @@ if test -z "$PRESET_LDFLAGS"; then fi fi +if test "x$ac_cv_enabled_dlmalloc" = "x"; then + case "$host" in + i386-*-solaris2.*) + echo "Enabling dlmalloc for $host" + ac_cv_enabled_dlmalloc="yes" + ;; + esac +fi + # Check whether --enable-dlmalloc or --disable-dlmalloc was given. if test "${enable_dlmalloc+set}" = set; then enableval="$enable_dlmalloc" @@ -1442,7 +1452,7 @@ case "$host" in esac echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1446: checking how to run the C preprocessor" >&5 +echo "configure:1456: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1457,13 +1467,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1474,13 +1484,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1484: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1513,7 +1523,7 @@ echo "$ac_t""$CPP" 1>&6 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1517: checking for a BSD compatible install" >&5 +echo "configure:1527: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1565,7 +1575,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1569: checking for $ac_word" >&5 +echo "configure:1579: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1592,7 +1602,7 @@ else fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1596: checking whether ln -s works" >&5 +echo "configure:1606: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1615,7 +1625,7 @@ fi # Extract the first word of "sh", so it can be a program name with args. set dummy sh; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1619: checking for $ac_word" >&5 +echo "configure:1629: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1647,7 +1657,7 @@ fi # Extract the first word of "false", so it can be a program name with args. set dummy false; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1651: checking for $ac_word" >&5 +echo "configure:1661: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_FALSE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1679,7 +1689,7 @@ fi # Extract the first word of "true", so it can be a program name with args. set dummy true; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1683: checking for $ac_word" >&5 +echo "configure:1693: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_TRUE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1711,7 +1721,7 @@ fi # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1715: checking for $ac_word" >&5 +echo "configure:1725: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1743,7 +1753,7 @@ fi # Extract the first word of "mv", so it can be a program name with args. set dummy mv; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1747: checking for $ac_word" >&5 +echo "configure:1757: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1775,7 +1785,7 @@ fi # Extract the first word of "mkdir", so it can be a program name with args. set dummy mkdir; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1779: checking for $ac_word" >&5 +echo "configure:1789: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MKDIR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1807,7 +1817,7 @@ fi # Extract the first word of "ln", so it can be a program name with args. set dummy ln; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1811: checking for $ac_word" >&5 +echo "configure:1821: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_LN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1839,7 +1849,7 @@ fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1843: checking for $ac_word" >&5 +echo "configure:1853: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1871,7 +1881,7 @@ fi # Extract the first word of "makedepend", so it can be a program name with args. set dummy makedepend; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1875: checking for $ac_word" >&5 +echo "configure:1885: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MAKEDEPEND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1903,7 +1913,7 @@ fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1907: checking for $ac_word" >&5 +echo "configure:1917: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1953,12 +1963,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:1957: checking for $ac_hdr that defines DIR" >&5 +echo "configure:1967: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -1966,7 +1976,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:1970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -1991,7 +2001,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:1995: checking for opendir in -ldir" >&5 +echo "configure:2005: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1999,7 +2009,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2032,7 +2042,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:2036: checking for opendir in -lx" >&5 +echo "configure:2046: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2040,7 +2050,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2074,12 +2084,12 @@ fi fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2078: checking for ANSI C header files" >&5 +echo "configure:2088: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2087,7 +2097,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2091: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2101: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2104,7 +2114,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2122,7 +2132,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2143,7 +2153,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2154,7 +2164,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then : else @@ -2238,17 +2248,17 @@ for ac_hdr in \ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2242: checking for $ac_hdr" >&5 +echo "configure:2252: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -2276,12 +2286,12 @@ done echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2280: checking for working const" >&5 +echo "configure:2290: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2351,14 +2361,14 @@ EOF fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:2355: checking whether byte ordering is bigendian" >&5 +echo "configure:2365: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -2369,11 +2379,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:2373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -2384,7 +2394,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:2388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2398: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -2404,7 +2414,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -2442,20 +2452,20 @@ fi echo $ac_n "checking if ANSI prototypes work""... $ac_c" 1>&6 -echo "configure:2446: checking if ANSI prototypes work" >&5 +echo "configure:2456: checking if ANSI prototypes work" >&5 if eval "test \"`echo '$''{'ac_cv_have_ansi_prototypes'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_ansi_prototypes="yes" else @@ -2477,13 +2487,13 @@ EOF fi echo $ac_n "checking for tm->tm_gmtoff""... $ac_c" 1>&6 -echo "configure:2481: checking for tm->tm_gmtoff" >&5 +echo "configure:2491: checking for tm->tm_gmtoff" >&5 if eval "test \"`echo '$''{'ac_cv_have_tm_gmoff'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2492,7 +2502,7 @@ struct tm foo; foo.tm_gmtoff = 0; ; return 0; } EOF -if { (eval echo configure:2496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_tm_gmoff="yes" else @@ -2514,13 +2524,13 @@ EOF fi echo $ac_n "checking for extended mallinfo""... $ac_c" 1>&6 -echo "configure:2518: checking for extended mallinfo" >&5 +echo "configure:2528: checking for extended mallinfo" >&5 if eval "test \"`echo '$''{'ac_cv_have_ext_mallinfo'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2529,7 +2539,7 @@ struct mallinfo foo; foo.mxfast = 0; ; return 0; } EOF -if { (eval echo configure:2533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_ext_mallinfo="yes" else @@ -2551,13 +2561,13 @@ EOF fi echo $ac_n "checking for struct rusage""... $ac_c" 1>&6 -echo "configure:2555: checking for struct rusage" >&5 +echo "configure:2565: checking for struct rusage" >&5 if eval "test \"`echo '$''{'ac_cv_have_struct_rusage'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_struct_rusage="yes" else @@ -2592,13 +2602,13 @@ EOF fi echo $ac_n "checking for ip->ip_hl""... $ac_c" 1>&6 -echo "configure:2596: checking for ip->ip_hl" >&5 +echo "configure:2606: checking for ip->ip_hl" >&5 if eval "test \"`echo '$''{'ac_cv_have_ip_hl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2615,7 +2625,7 @@ struct iphdr ip; ip.ip_hl= 0; ; return 0; } EOF -if { (eval echo configure:2619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_ip_hl="yes" else @@ -2637,7 +2647,7 @@ EOF fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:2641: checking size of int" >&5 +echo "configure:2651: checking size of int" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2645,7 +2655,7 @@ else { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() @@ -2656,7 +2666,7 @@ main() exit(0); } EOF -if { (eval echo configure:2660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_int=`cat conftestval` else @@ -2676,7 +2686,7 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:2680: checking size of long" >&5 +echo "configure:2690: checking size of long" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2684,7 +2694,7 @@ else { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < main() @@ -2695,7 +2705,7 @@ main() exit(0); } EOF -if { (eval echo configure:2699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long=`cat conftestval` else @@ -2714,23 +2724,62 @@ cat >> confdefs.h <&6 +echo "configure:2729: checking size of void *" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(void *)); + exit(0); +} +EOF +if { (eval echo configure:2748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_void_p=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_void_p=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_void_p" 1>&6 +cat >> confdefs.h <&6 -echo "configure:2722: checking for working alloca.h" >&5 +echo "configure:2771: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:2734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -2751,12 +2800,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:2755: checking for alloca" >&5 +echo "configure:2804: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -2811,12 +2860,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2815: checking whether alloca needs Cray hooks" >&5 +echo "configure:2864: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2845: checking for $ac_func" >&5 +echo "configure:2894: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2896,7 +2945,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2900: checking stack direction for C alloca" >&5 +echo "configure:2949: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2904,7 +2953,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2946,12 +2995,12 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:2950: checking for pid_t" >&5 +echo "configure:2999: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2979,12 +3028,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2983: checking for size_t" >&5 +echo "configure:3032: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3012,12 +3061,12 @@ EOF fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:3016: checking for ssize_t" >&5 +echo "configure:3065: checking for ssize_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3045,12 +3094,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3049: checking for off_t" >&5 +echo "configure:3098: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3078,12 +3127,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:3082: checking for mode_t" >&5 +echo "configure:3131: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3111,12 +3160,12 @@ EOF fi echo $ac_n "checking for fd_mask""... $ac_c" 1>&6 -echo "configure:3115: checking for fd_mask" >&5 +echo "configure:3164: checking for fd_mask" >&5 if eval "test \"`echo '$''{'ac_cv_type_fd_mask'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3145,13 +3194,13 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:3149: checking for socklen_t" >&5 +echo "configure:3198: checking for socklen_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3182,7 +3231,7 @@ EOF fi echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 -echo "configure:3186: checking for main in -lnsl" >&5 +echo "configure:3235: checking for main in -lnsl" >&5 ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3190,14 +3239,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3225,7 +3274,7 @@ else fi echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6 -echo "configure:3229: checking for main in -lsocket" >&5 +echo "configure:3278: checking for main in -lsocket" >&5 ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3233,14 +3282,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3272,7 +3321,7 @@ if test "x$ac_cv_enabled_dlmalloc" = "xyes" ; then echo "skipping libmalloc check (--enable-dlmalloc specified)" else echo $ac_n "checking for main in -lgnumalloc""... $ac_c" 1>&6 -echo "configure:3276: checking for main in -lgnumalloc" >&5 +echo "configure:3325: checking for main in -lgnumalloc" >&5 ac_lib_var=`echo gnumalloc'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3280,14 +3329,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lgnumalloc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3330,7 +3379,7 @@ fi *) echo $ac_n "checking for main in -lmalloc""... $ac_c" 1>&6 -echo "configure:3334: checking for main in -lmalloc" >&5 +echo "configure:3383: checking for main in -lmalloc" >&5 ac_lib_var=`echo malloc'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3338,14 +3387,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lmalloc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3378,7 +3427,7 @@ fi fi echo $ac_n "checking for main in -lbsd""... $ac_c" 1>&6 -echo "configure:3382: checking for main in -lbsd" >&5 +echo "configure:3431: checking for main in -lbsd" >&5 ac_lib_var=`echo bsd'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3386,14 +3435,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lbsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3421,7 +3470,7 @@ else fi echo $ac_n "checking for main in -lregex""... $ac_c" 1>&6 -echo "configure:3425: checking for main in -lregex" >&5 +echo "configure:3474: checking for main in -lregex" >&5 ac_lib_var=`echo regex'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3429,14 +3478,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lregex $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3457,7 +3506,7 @@ else fi echo $ac_n "checking for gethostbyname in -lbind""... $ac_c" 1>&6 -echo "configure:3461: checking for gethostbyname in -lbind" >&5 +echo "configure:3510: checking for gethostbyname in -lbind" >&5 ac_lib_var=`echo bind'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3465,7 +3514,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3510,7 +3559,7 @@ if test $ac_cv_lib_bind_gethostbyname = "no" ; then ;; *) echo $ac_n "checking for inet_aton in -lresolv""... $ac_c" 1>&6 -echo "configure:3514: checking for inet_aton in -lresolv" >&5 +echo "configure:3563: checking for inet_aton in -lresolv" >&5 ac_lib_var=`echo resolv'_'inet_aton | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3518,7 +3567,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3545,7 +3594,7 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for inet_aton in -l44bsd""... $ac_c" 1>&6 -echo "configure:3549: checking for inet_aton in -l44bsd" >&5 +echo "configure:3598: checking for inet_aton in -l44bsd" >&5 ac_lib_var=`echo 44bsd'_'inet_aton | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3553,7 +3602,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l44bsd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3596,7 +3645,7 @@ else fi echo $ac_n "checking for main in -lresolv""... $ac_c" 1>&6 -echo "configure:3600: checking for main in -lresolv" >&5 +echo "configure:3649: checking for main in -lresolv" >&5 ac_lib_var=`echo resolv'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3604,14 +3653,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3642,7 +3691,7 @@ fi esac fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:3646: checking for main in -lm" >&5 +echo "configure:3695: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3650,14 +3699,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3686,7 +3735,7 @@ fi echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:3690: checking for crypt in -lcrypt" >&5 +echo "configure:3739: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3694,7 +3743,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrypt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3738,7 +3787,7 @@ fi echo $ac_n "checking for main in -lpthread""... $ac_c" 1>&6 -echo "configure:3742: checking for main in -lpthread" >&5 +echo "configure:3791: checking for main in -lpthread" >&5 ac_lib_var=`echo pthread'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3746,14 +3795,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3788,7 +3837,7 @@ fi case "$host" in *-pc-sco3.2*) echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6 -echo "configure:3792: checking for strftime in -lintl" >&5 +echo "configure:3841: checking for strftime in -lintl" >&5 ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3796,7 +3845,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3908,8 +3957,11 @@ if test -z "$ac_cv_func_poll"; then # Henrik Nordstrom (hno@hem.passagen.se) 19980817 # poll is problematic on Linux. We disable it # by default until Linux gets it right. - echo "disabling poll for $host..." - ac_cv_func_poll='no' + rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'` + if test $rev -lt 002002; then + echo "disabling poll for $host < 2.2..." + ac_cv_func_poll='no' + fi ;; powerpc-ibm-aix4.1.*) # Mike Laster (mlaster@metavillage.com) 19981021 @@ -3954,12 +4006,12 @@ for ac_func in \ seteuid \ setpgrp \ setrlimit \ + getrlimit \ setsid \ sigaction \ snprintf \ srand48 \ srandom \ - statvfs \ sysconf \ syslog \ tempnam \ @@ -3968,12 +4020,12 @@ for ac_func in \ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3972: checking for $ac_func" >&5 +echo "configure:4024: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4029,12 +4081,12 @@ if test "$async_io" = "yes" ; then do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4033: checking for $ac_func" >&5 +echo "configure:4085: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4084,7 +4136,7 @@ done fi echo $ac_n "checking if setresuid is implemented""... $ac_c" 1>&6 -echo "configure:4088: checking if setresuid is implemented" >&5 +echo "configure:4140: checking if setresuid is implemented" >&5 if eval "test \"`echo '$''{'ac_cv_func_setresuid'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4092,7 +4144,7 @@ else { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < @@ -4105,7 +4157,7 @@ else } EOF -if { (eval echo configure:4109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_setresuid="yes" else @@ -4130,7 +4182,7 @@ fi if test "$IPF_TRANSPARENT" ; then echo $ac_n "checking if IP-Filter header files are installed""... $ac_c" 1>&6 -echo "configure:4134: checking if IP-Filter header files are installed" >&5 +echo "configure:4186: checking if IP-Filter header files are installed" >&5 if test "$ac_cv_header_ip_compat_h" = "no" || test "$ac_cv_header_ip_fil_h" = "no" || test "$ac_cv_header_ip_nat_h" = "no" ; then @@ -4165,13 +4217,13 @@ if test -z "$USE_GNUREGEX" ; then esac fi echo $ac_n "checking if GNUregex needs to be compiled""... $ac_c" 1>&6 -echo "configure:4169: checking if GNUregex needs to be compiled" >&5 +echo "configure:4221: checking if GNUregex needs to be compiled" >&5 if test -z "$USE_GNUREGEX"; then if test "$ac_cv_func_regcomp" = "no" || test "$USE_GNUREGEX" = "yes" ; then USE_GNUREGEX="yes" else cat > conftest.$ac_ext < #include @@ -4179,7 +4231,7 @@ int main() { regex_t t; regcomp(&t,"",0); ; return 0; } EOF -if { (eval echo configure:4183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* USE_GNUREGEX="no" else @@ -4210,12 +4262,12 @@ for ac_func in \ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4214: checking for $ac_func" >&5 +echo "configure:4266: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4266,12 +4318,12 @@ done echo $ac_n "checking Default FD_SETSIZE value""... $ac_c" 1>&6 -echo "configure:4270: checking Default FD_SETSIZE value" >&5 +echo "configure:4322: checking Default FD_SETSIZE value" >&5 if test "$cross_compiling" = yes; then DEFAULT_FD_SETSIZE=256 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then DEFAULT_FD_SETSIZE=`cat conftestval` else @@ -4315,12 +4367,12 @@ EOF echo $ac_n "checking Maximum number of filedescriptors we can open""... $ac_c" 1>&6 -echo "configure:4319: checking Maximum number of filedescriptors we can open" >&5 +echo "configure:4371: checking Maximum number of filedescriptors we can open" >&5 if test "$cross_compiling" = yes; then SQUID_MAXFD=256 else cat > conftest.$ac_ext < @@ -4359,7 +4411,12 @@ main() { } #endif /* RLIMIT_NOFILE */ #endif /* HAVE_SETRLIMIT */ -#if HAVE_SYSCONF && defined(_SC_OPEN_MAX) +#if HAVE_GETRLIMIT && defined(RLIMIT_NOFILE) + if (getrlimit(RLIMIT_NOFILE, &rl) < 0) { + perror("getrlimit: RLIMIT_NOFILE"); + } + i = rl.rlim_cur; +#elif HAVE_SYSCONF && defined(_SC_OPEN_MAX) i = sysconf(_SC_OPEN_MAX); #elif HAVE_GETDTABLESIZE && !defined(__linux__) i = getdtablesize(); @@ -4381,7 +4438,7 @@ main() { } EOF -if { (eval echo configure:4385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then SQUID_MAXFD=`cat conftestval` else @@ -4407,12 +4464,12 @@ if test "$SQUID_MAXFD" -lt 512 ; then fi echo $ac_n "checking Default UDP send buffer size""... $ac_c" 1>&6 -echo "configure:4411: checking Default UDP send buffer size" >&5 +echo "configure:4468: checking Default UDP send buffer size" >&5 if test "$cross_compiling" = yes; then SQUID_UDP_SO_SNDBUF=16384 else cat > conftest.$ac_ext < @@ -4433,7 +4490,7 @@ main () } EOF -if { (eval echo configure:4437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then SQUID_UDP_SO_SNDBUF=`cat conftestval` else @@ -4452,12 +4509,12 @@ EOF echo $ac_n "checking Default UDP receive buffer size""... $ac_c" 1>&6 -echo "configure:4456: checking Default UDP receive buffer size" >&5 +echo "configure:4513: checking Default UDP receive buffer size" >&5 if test "$cross_compiling" = yes; then SQUID_UDP_SO_RCVBUF=16384 else cat > conftest.$ac_ext < @@ -4478,7 +4535,7 @@ main () } EOF -if { (eval echo configure:4482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then SQUID_UDP_SO_RCVBUF=`cat conftestval` else @@ -4497,12 +4554,12 @@ EOF echo $ac_n "checking Default TCP send buffer size""... $ac_c" 1>&6 -echo "configure:4501: checking Default TCP send buffer size" >&5 +echo "configure:4558: checking Default TCP send buffer size" >&5 if test "$cross_compiling" = yes; then SQUID_TCP_SO_SNDBUF=16384 else cat > conftest.$ac_ext < @@ -4514,7 +4571,6 @@ main () { FILE *fp; int fd,val=0,len=sizeof(int); - FILE *fp; if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1); if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) exit(1); if (val <= 0) exit(1); @@ -4524,7 +4580,7 @@ main () } EOF -if { (eval echo configure:4528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then SQUID_TCP_SO_SNDBUF=`cat conftestval` else @@ -4543,12 +4599,12 @@ EOF echo $ac_n "checking Default TCP receive buffer size""... $ac_c" 1>&6 -echo "configure:4547: checking Default TCP receive buffer size" >&5 +echo "configure:4603: checking Default TCP receive buffer size" >&5 if test "$cross_compiling" = yes; then SQUID_TCP_SO_RCVBUF=16384 else cat > conftest.$ac_ext < @@ -4560,7 +4616,6 @@ main () { FILE *fp; int fd,val=0,len=sizeof(int); - FILE *fp; if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1); if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) exit(1); if (val <= 0) exit(1); @@ -4570,7 +4625,7 @@ main () } EOF -if { (eval echo configure:4574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then SQUID_TCP_SO_RCVBUF=`cat conftestval` else @@ -4589,19 +4644,19 @@ EOF echo $ac_n "checking if sys_errlist is already defined""... $ac_c" 1>&6 -echo "configure:4593: checking if sys_errlist is already defined" >&5 +echo "configure:4648: checking if sys_errlist is already defined" >&5 if eval "test \"`echo '$''{'ac_cv_needs_sys_errlist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *s = sys_errlist0; ; return 0; } EOF -if { (eval echo configure:4605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_needs_sys_errlist="no" else @@ -4623,16 +4678,16 @@ EOF fi echo $ac_n "checking for libresolv _dns_ttl_ hack""... $ac_c" 1>&6 -echo "configure:4627: checking for libresolv _dns_ttl_ hack" >&5 +echo "configure:4682: checking for libresolv _dns_ttl_ hack" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF @@ -4648,12 +4703,12 @@ fi rm -f conftest* echo $ac_n "checking if inet_ntoa() actually works""... $ac_c" 1>&6 -echo "configure:4652: checking if inet_ntoa() actually works" >&5 +echo "configure:4707: checking if inet_ntoa() actually works" >&5 if test "$cross_compiling" = yes; then INET_NTOA_RESULT="broken" else cat > conftest.$ac_ext < @@ -4672,7 +4727,7 @@ main () } EOF -if { (eval echo configure:4676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then INET_NTOA_RESULT=`cat conftestval` else @@ -4688,17 +4743,19 @@ if test "$INET_NTOA_RESULT" = "1.2.3.4" ; then echo "$ac_t"""yes"" 1>&6 else echo "$ac_t"""no"" 1>&6 - echo "WARNING: This looks bad, and probably prevents Squid from working." - echo " If you're on IRIX and using GCC 2.8, you probably need" - echo " to use the IRIX C compiler instead." - sleep 10 + echo "Will use our own inet_ntoa()." + LIBOBJS="$LIBOBJS inet_ntoa.o" +# echo "WARNING: This looks bad, and probably prevents Squid from working." +# echo " If you're on IRIX and using GCC 2.8, you probably need" +# echo " to use the IRIX C compiler instead." +# sleep 10 fi -if test "$ac_cv_func_statvfs" = "yes" ; then +if test "$ac_cv_header_sys_statvfs_h" = "yes" ; then echo $ac_n "checking for working statvfs() interface""... $ac_c" 1>&6 -echo "configure:4700: checking for working statvfs() interface" >&5 +echo "configure:4757: checking for working statvfs() interface" >&5 cat > conftest.$ac_ext < @@ -4715,7 +4772,7 @@ statvfs("/tmp", &sfs); ; return 0; } EOF -if { (eval echo configure:4719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4776: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_func_statvfs=yes else @@ -4726,15 +4783,21 @@ else fi rm -f conftest* echo "$ac_t""$ac_cv_func_statvfs" 1>&6 +fi +if test $ac_cv_func_statvfs = "yes" ; then + cat >> confdefs.h <<\EOF +#define HAVE_STATVFS 1 +EOF + fi echo $ac_n "checking for _res.nsaddr_list""... $ac_c" 1>&6 -echo "configure:4733: checking for _res.nsaddr_list" >&5 +echo "configure:4796: checking for _res.nsaddr_list" >&5 if eval "test \"`echo '$''{'ac_cv_have_res_nsaddr_list'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_res_nsaddr_list="yes" else @@ -4779,12 +4842,12 @@ fi if test $ac_cv_have_res_nsaddr_list = "no" ; then echo $ac_n "checking for _res.ns_list""... $ac_c" 1>&6 -echo "configure:4783: checking for _res.ns_list" >&5 +echo "configure:4846: checking for _res.ns_list" >&5 if eval "test \"`echo '$''{'ac_cv_have_res_ns_list'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_res_ns_list="yes" else @@ -4968,6 +5031,7 @@ trap 'rm -fr `echo "\ ./auth_modules/NCSA/Makefile \ ./auth_modules/PAM/Makefile \ ./auth_modules/SMB/Makefile + ./auth_modules/getpwnam/Makefile \ include/autoconf.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF diff --git a/configure.in b/configure.in index 76a3271a1b..6863169681 100644 --- a/configure.in +++ b/configure.in @@ -3,13 +3,13 @@ dnl Configuration input file for Squid dnl dnl Duane Wessels, wessels@nlanr.net, February 1996 (autoconf v2.9) dnl -dnl $Id: configure.in,v 1.168 1999/04/07 19:48:53 wessels Exp $ +dnl $Id: configure.in,v 1.169 1999/04/15 06:14:54 wessels Exp $ dnl dnl dnl AC_INIT(src/main.c) AC_CONFIG_HEADER(include/autoconf.h) -AC_REVISION($Revision: 1.168 $)dnl +AC_REVISION($Revision: 1.169 $)dnl AC_PREFIX_DEFAULT(/usr/local/squid) AC_CONFIG_AUX_DIR(cfgaux) @@ -97,6 +97,7 @@ if test -z "$PRESET_CFLAGS"; then ;; alpha-dec-osf4.*) # Mogul says DEC compilers take both -g and -O2 + CFLAGS=`echo $CFLAGS | sed -e 's/-g/-g3/'` CFLAGS="$CFLAGS -O2" ;; *) @@ -123,6 +124,15 @@ if test -z "$PRESET_LDFLAGS"; then fi fi +if test "x$ac_cv_enabled_dlmalloc" = "x"; then + case "$host" in + i386-*-solaris2.*) + echo "Enabling dlmalloc for $host" + ac_cv_enabled_dlmalloc="yes" + ;; + esac +fi + dnl Enable optional modules AC_ARG_ENABLE(dlmalloc, [ --enable-dlmalloc[=LIB] Compile & use the malloc package by Doug Lea], @@ -696,6 +706,7 @@ fi dnl Check for typedefs AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(void *) dnl Check for special functions AC_FUNC_ALLOCA @@ -864,8 +875,11 @@ if test -z "$ac_cv_func_poll"; then # Henrik Nordstrom (hno@hem.passagen.se) 19980817 # poll is problematic on Linux. We disable it # by default until Linux gets it right. - echo "disabling poll for $host..." - ac_cv_func_poll='no' + rev=`uname -r | awk -F. '{printf "%03d%03d",$1,$2}'` + if test $rev -lt 002002; then + echo "disabling poll for $host < 2.2..." + ac_cv_func_poll='no' + fi ;; [powerpc-ibm-aix4.1.*]) # Mike Laster (mlaster@metavillage.com) 19981021 @@ -911,12 +925,12 @@ AC_CHECK_FUNCS(\ seteuid \ setpgrp \ setrlimit \ + getrlimit \ setsid \ sigaction \ snprintf \ srand48 \ srandom \ - statvfs \ sysconf \ syslog \ tempnam \ @@ -1078,7 +1092,12 @@ main() { } #endif /* RLIMIT_NOFILE */ #endif /* HAVE_SETRLIMIT */ -#if HAVE_SYSCONF && defined(_SC_OPEN_MAX) +#if HAVE_GETRLIMIT && defined(RLIMIT_NOFILE) + if (getrlimit(RLIMIT_NOFILE, &rl) < 0) { + perror("getrlimit: RLIMIT_NOFILE"); + } + i = rl.rlim_cur; +#elif HAVE_SYSCONF && defined(_SC_OPEN_MAX) i = sysconf(_SC_OPEN_MAX); #elif HAVE_GETDTABLESIZE && !defined(__linux__) i = getdtablesize(); @@ -1176,7 +1195,6 @@ main () { FILE *fp; int fd,val=0,len=sizeof(int); - FILE *fp; if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1); if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) exit(1); if (val <= 0) exit(1); @@ -1203,7 +1221,6 @@ main () { FILE *fp; int fd,val=0,len=sizeof(int); - FILE *fp; if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1); if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) exit(1); if (val <= 0) exit(1); @@ -1258,13 +1275,15 @@ if test "$INET_NTOA_RESULT" = "1.2.3.4" ; then AC_MSG_RESULT("yes") else AC_MSG_RESULT("no") - echo "WARNING: This looks bad, and probably prevents Squid from working." - echo " If you're on IRIX and using GCC 2.8, you probably need" - echo " to use the IRIX C compiler instead." - sleep 10 + echo "Will use our own inet_ntoa()." + LIBOBJS="$LIBOBJS inet_ntoa.o" +# echo "WARNING: This looks bad, and probably prevents Squid from working." +# echo " If you're on IRIX and using GCC 2.8, you probably need" +# echo " to use the IRIX C compiler instead." +# sleep 10 fi -if test "$ac_cv_func_statvfs" = "yes" ; then +if test "$ac_cv_header_sys_statvfs_h" = "yes" ; then AC_MSG_CHECKING(for working statvfs() interface) AC_TRY_COMPILE([ #include @@ -1282,6 +1301,9 @@ statvfs("/tmp", &sfs); ac_cv_func_statvfs=no) AC_MSG_RESULT($ac_cv_func_statvfs) fi +if test $ac_cv_func_statvfs = "yes" ; then + AC_DEFINE(HAVE_STATVFS) +fi AC_CACHE_CHECK(for _res.nsaddr_list, ac_cv_have_res_nsaddr_list, AC_TRY_COMPILE([ @@ -1379,4 +1401,5 @@ AC_OUTPUT(\ ./auth_modules/NCSA/Makefile \ ./auth_modules/PAM/Makefile \ ./auth_modules/SMB/Makefile + ./auth_modules/getpwnam/Makefile \ ) diff --git a/errors/Bulgarian/ERR_FTP_FORBIDDEN b/errors/Bulgarian/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Bulgarian/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/Bulgarian/ERR_FTP_NOT_FOUND b/errors/Bulgarian/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Bulgarian/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The following URL could not be retrieved: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

+ diff --git a/errors/Bulgarian/ERR_FTP_UNAVAILABLE b/errors/Bulgarian/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Bulgarian/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The FTP server was too busy while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/Czech/ERR_FTP_FORBIDDEN b/errors/Czech/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Czech/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/Czech/ERR_FTP_NOT_FOUND b/errors/Czech/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Czech/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The following URL could not be retrieved: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

+ diff --git a/errors/Czech/ERR_FTP_UNAVAILABLE b/errors/Czech/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Czech/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The FTP server was too busy while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/Dutch/ERR_FTP_FORBIDDEN b/errors/Dutch/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Dutch/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/Dutch/ERR_FTP_NOT_FOUND b/errors/Dutch/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Dutch/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The following URL could not be retrieved: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

+ diff --git a/errors/Dutch/ERR_FTP_UNAVAILABLE b/errors/Dutch/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Dutch/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The FTP server was too busy while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/English/ERR_FTP_FAILURE b/errors/English/ERR_FTP_FAILURE index 0a880dd026..20d9e335d5 100644 --- a/errors/English/ERR_FTP_FAILURE +++ b/errors/English/ERR_FTP_FAILURE @@ -14,9 +14,5 @@ Squid sent the following FTP command: and then received this reply
%F
%g
-

-This might be caused by an FTP URL with an absolute path (which does -not comply with RFC 1738). If this is the cause, then the file -can be found at %B.

diff --git a/errors/English/ERR_FTP_FORBIDDEN b/errors/English/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/English/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/English/ERR_FTP_NOT_FOUND b/errors/English/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/English/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The following URL could not be retrieved: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

+ diff --git a/errors/English/ERR_FTP_UNAVAILABLE b/errors/English/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/English/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

ERROR

+

The requested URL could not be retrieved

+
+

+The FTP server was too busy while trying to retrieve the URL: +%U +

+Squid sent the following FTP command: +

%f
+and then received this reply +
%F
+
%g
+

+ diff --git a/errors/Estonian/ERR_FTP_FORBIDDEN b/errors/Estonian/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..e4caa782c3 --- /dev/null +++ b/errors/Estonian/ERR_FTP_FORBIDDEN @@ -0,0 +1,16 @@ + +VIGA: Päring URLile ei saa vastust + +

VIGA

+

Päring URLile ei saa vastust

+
+

+URLi %U lugemisel tekkis tõrge FTP autentimisel. +

+Squid saatis järgneva FTP käsu: +

%f
+ja sai sellise vastuse +
%F
+
%g
+

+ diff --git a/errors/Estonian/ERR_FTP_NOT_FOUND b/errors/Estonian/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..08718ef18d --- /dev/null +++ b/errors/Estonian/ERR_FTP_NOT_FOUND @@ -0,0 +1,20 @@ + +VIGA: Päring URLile ei saa vastust + +

VIGA

+

Päring URLile ei saa vastust

+
+

+URLi %U ei õnnestu lugeda: +

+Squid saatis järgneva ftp käsu: +

%f
+ja sai sellise vastuse +
%F
+
%g
+

+See olukord võib olla tekkinud, kui FTP URL on antud absoluutse +teega (mis on vastuolus RFC 1738-ga). Kui see on nii, siis saab faili +aadressilt %B. +

+ diff --git a/errors/Estonian/ERR_FTP_UNAVAILABLE b/errors/Estonian/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..705908c2ae --- /dev/null +++ b/errors/Estonian/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +VIGA: Päring URLile ei saa vastust + +

VIGA

+

Päring URLile ei saa vastust

+
+

+FTP server oli järgneva URLi lugemise ajal liiga koormatud: +%U +

+Squid saatis järgneva FTP käsu: +

%f
+ja sai sellise vastuse +
%F
+
%g
+

+ diff --git a/errors/Estonian/ERR_SHUTTING_DOWN b/errors/Estonian/ERR_SHUTTING_DOWN index 3cc9afaa05..9db0092e92 100644 --- a/errors/Estonian/ERR_SHUTTING_DOWN +++ b/errors/Estonian/ERR_SHUTTING_DOWN @@ -1,17 +1,17 @@ -ERROR: The requested URL could not be retrieved +VIGA: Päring URLile ei saa vastust -

ERROR

-

The requested URL could not be retrieved

+

VIGA

+

Päring URLile ei saa vastust


-While trying to retrieve the URL: +Lugedes järgnevat URLi: %U

-The following error was encountered: +Tekkis järgnev viga:

    -This cache is in the process of shutting down and can not -service your request at this time. Please retry your -request again soon. +Meie server on saanud käsu töö lõpetada ja +ei saa teie päringut hetkel teenindada. Palun korrake oma +päringut motilde;ne aja pärast.

    diff --git a/errors/Estonian/ERR_ZERO_SIZE_OBJECT b/errors/Estonian/ERR_ZERO_SIZE_OBJECT index 414027d34a..9192ba9f6f 100644 --- a/errors/Estonian/ERR_ZERO_SIZE_OBJECT +++ b/errors/Estonian/ERR_ZERO_SIZE_OBJECT @@ -1,21 +1,21 @@ - -VIGA: Päring URLile ei saa vastust - -

    VIGA

    -

    Päring URLile ei saa vastust

    -
    -

    -Sooritades päringut URLile -%U -

    -tekkis järgnev viga: -

      -
    • - -Vastus on tühi - -
    - -

    -Squid ei saanud selle päringu vastuseks midagi... -

    + +VIGA: Päring URLile ei saa vastust + +

    VIGA

    +

    Päring URLile ei saa vastust

    +
    +

    +Sooritades päringut URLile +%U +

    +tekkis järgnev viga: +

      +
    • + +Vastus on tühi + +
    + +

    +Squid ei saanud selle päringu vastuseks midagi... +

    diff --git a/errors/French/ERR_FTP_FORBIDDEN b/errors/French/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/French/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/French/ERR_FTP_NOT_FOUND b/errors/French/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/French/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The following URL could not be retrieved: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

    + diff --git a/errors/French/ERR_FTP_UNAVAILABLE b/errors/French/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/French/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The FTP server was too busy while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/German/ERR_FTP_FORBIDDEN b/errors/German/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/German/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/German/ERR_FTP_NOT_FOUND b/errors/German/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/German/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The following URL could not be retrieved: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

    + diff --git a/errors/German/ERR_FTP_UNAVAILABLE b/errors/German/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/German/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The FTP server was too busy while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Hungarian/ERR_CANNOT_FORWARD b/errors/Hungarian/ERR_CANNOT_FORWARD index ed082f761a..bf31ed31e5 100644 --- a/errors/Hungarian/ERR_CANNOT_FORWARD +++ b/errors/Hungarian/ERR_CANNOT_FORWARD @@ -22,6 +22,6 @@ A hiba oka val
    • A cache adminisztrátor nem engedélyezi a forrás szerverekhez való közvetlen kapcsolat felépítését és -
    • minden általunk használt szülõ cache szerver nem érhetõ el jelenleg. +
    • egyik általunk használt szülõ cache szerver sem érhetõ el jelenleg.

    diff --git a/errors/Hungarian/ERR_FTP_FORBIDDEN b/errors/Hungarian/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Hungarian/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Hungarian/ERR_FTP_NOT_FOUND b/errors/Hungarian/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Hungarian/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The following URL could not be retrieved: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

    + diff --git a/errors/Hungarian/ERR_FTP_UNAVAILABLE b/errors/Hungarian/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Hungarian/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The FTP server was too busy while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Hungarian/ERR_ONLY_IF_CACHED_MISS b/errors/Hungarian/ERR_ONLY_IF_CACHED_MISS index 63337950ca..6d1fef25b7 100644 --- a/errors/Hungarian/ERR_ONLY_IF_CACHED_MISS +++ b/errors/Hungarian/ERR_ONLY_IF_CACHED_MISS @@ -21,6 +21,6 @@ direkt Olyan kérést küldött el, amelyben only-if-cached cache vezérlõ direktíva található. A dokumentum nincs a cache-ben vagy a dokumentum -érvényesség-ellenõrzést igényelt volna, ezt azonban a only-if-cached +érvényesség-ellenõrzést igényelt volna, ezt azonban az only-if-cached direktíva megtiltotta.

    diff --git a/errors/Hungarian/ERR_SHUTTING_DOWN b/errors/Hungarian/ERR_SHUTTING_DOWN index 3cc9afaa05..cbde792049 100644 --- a/errors/Hungarian/ERR_SHUTTING_DOWN +++ b/errors/Hungarian/ERR_SHUTTING_DOWN @@ -1,17 +1,17 @@ -ERROR: The requested URL could not be retrieved - -

    ERROR

    -

    The requested URL could not be retrieved

    +HIBA: A kért URL nem tölthetõ le + + +

    HIBA

    +

    A kért URL nem tölthetõ le


    -While trying to retrieve the URL: +Az alábbi URL letöltésekor: %U

    -The following error was encountered: +a következõ hiba lépett fel:

      -

      -This cache is in the process of shutting down and can not -service your request at this time. Please retry your -request again soon. +

    • +A cache leállásra készül és ezért nem tudja kiszolgálni a kérését. +Kérjük, rövid idõ múlva ismételje meg kérését!

    diff --git a/errors/Italian/ERR_FTP_FORBIDDEN b/errors/Italian/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Italian/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Italian/ERR_FTP_NOT_FOUND b/errors/Italian/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Italian/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The following URL could not be retrieved: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

    + diff --git a/errors/Italian/ERR_FTP_UNAVAILABLE b/errors/Italian/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Italian/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The FTP server was too busy while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Japanese/ERR_FTP_FORBIDDEN b/errors/Japanese/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Japanese/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Japanese/ERR_FTP_NOT_FOUND b/errors/Japanese/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Japanese/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The following URL could not be retrieved: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

    + diff --git a/errors/Japanese/ERR_FTP_UNAVAILABLE b/errors/Japanese/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Japanese/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The FTP server was too busy while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Polish/ERR_FTP_FORBIDDEN b/errors/Polish/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Polish/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Polish/ERR_FTP_NOT_FOUND b/errors/Polish/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Polish/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The following URL could not be retrieved: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

    + diff --git a/errors/Polish/ERR_FTP_UNAVAILABLE b/errors/Polish/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Polish/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

    ERROR

    +

    The requested URL could not be retrieved

    +
    +

    +The FTP server was too busy while trying to retrieve the URL: +%U +

    +Squid sent the following FTP command: +

    %f
    +and then received this reply +
    %F
    +
    %g
    +

    + diff --git a/errors/Portuguese/ERR_FTP_FORBIDDEN b/errors/Portuguese/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..6d5cec5c6b --- /dev/null +++ b/errors/Portuguese/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERRO: A URL solicitada não pode ser recuperada + +

    ERRO

    +

    A URL solicitada não pode ser recuperada

    +
    +

    +Ocorreu uma falha na autenticação no FTP, +na tentativa de recuperar a seguinte URL: +%U +

    +Squid emitiu o seguinte comando FTP: +

    %f
    +e recebeu esta resposta: +
    %F
    +
    %g
    +

    + diff --git a/errors/Portuguese/ERR_FTP_NOT_FOUND b/errors/Portuguese/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..9dcc897992 --- /dev/null +++ b/errors/Portuguese/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERRO: A URL solicitada não pode ser recuperada + +

    ERRO

    +

    A URL solicitada não pode ser recuperada

    +
    +

    +A seguite URL não pode ser recuperada (não foi encontrada): +%U +

    +Squid emitiu o seguinte comando FTP: +

    %f
    +e recebeu esta resposta: +
    %F
    +
    %g
    +

    +Isto pode ter como causa uma URL de FTP com caminho absoluto (quenão +está de acordo com a RFC 1738). Se a causa for essa, então +o arquivo pode ser encontrado em %B. +

    + diff --git a/errors/Portuguese/ERR_FTP_UNAVAILABLE b/errors/Portuguese/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..729ce3a304 --- /dev/null +++ b/errors/Portuguese/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERRO: A URL solicitada não pode ser recuperada + +

    ERRO

    +

    A URL solicitada não pode ser recuperada

    +
    +

    +O servidor de FTP estava muito ocupado, enquanto tentava recuperar a seguite URL: +%U +

    +Squid emitiu o seguinte comando FTP: +

    %f
    +e recebeu esta resposta: +
    %F
    +
    %g
    +

    + diff --git a/errors/Portuguese/ERR_SHUTTING_DOWN b/errors/Portuguese/ERR_SHUTTING_DOWN index 3cc9afaa05..7723c28398 100644 --- a/errors/Portuguese/ERR_SHUTTING_DOWN +++ b/errors/Portuguese/ERR_SHUTTING_DOWN @@ -1,17 +1,20 @@ -ERROR: The requested URL could not be retrieved +ERRO: A URL solicitada não pode ser recuperada -

    ERROR

    -

    The requested URL could not be retrieved

    +

    ERRO

    +

    A URL solicitada não pode ser recuperada


    -While trying to retrieve the URL: -%U +Enquanto tentava recuperar a URL: +%U,

    -The following error was encountered: +o seguite erro foi encontrado:

      -This cache is in the process of shutting down and can not -service your request at this time. Please retry your -request again soon. +Este servidor de cache está em procedimento de +shutting down e não pode servir +sua requisição neste momento. Por favor, +tente mais tarde. Você pode tentar usar outro servidor +de cache, ou desligar o proxy, alterando a +configuração de seu browser.

      diff --git a/errors/Russian-1251/ERR_FTP_FORBIDDEN b/errors/Russian-1251/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Russian-1251/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Russian-1251/ERR_FTP_NOT_FOUND b/errors/Russian-1251/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Russian-1251/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The following URL could not be retrieved: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

      + diff --git a/errors/Russian-1251/ERR_FTP_UNAVAILABLE b/errors/Russian-1251/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Russian-1251/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The FTP server was too busy while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Russian-koi8-r/ERR_FTP_FORBIDDEN b/errors/Russian-koi8-r/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Russian-koi8-r/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Russian-koi8-r/ERR_FTP_NOT_FOUND b/errors/Russian-koi8-r/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Russian-koi8-r/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The following URL could not be retrieved: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

      + diff --git a/errors/Russian-koi8-r/ERR_FTP_UNAVAILABLE b/errors/Russian-koi8-r/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Russian-koi8-r/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The FTP server was too busy while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Slovak/ERR_FTP_FORBIDDEN b/errors/Slovak/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Slovak/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Slovak/ERR_FTP_NOT_FOUND b/errors/Slovak/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Slovak/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The following URL could not be retrieved: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

      + diff --git a/errors/Slovak/ERR_FTP_UNAVAILABLE b/errors/Slovak/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Slovak/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The FTP server was too busy while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Spanish/ERR_FTP_FORBIDDEN b/errors/Spanish/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Spanish/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Spanish/ERR_FTP_NOT_FOUND b/errors/Spanish/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Spanish/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The following URL could not be retrieved: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

      + diff --git a/errors/Spanish/ERR_FTP_UNAVAILABLE b/errors/Spanish/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Spanish/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The FTP server was too busy while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Traditional_Chinese/ERR_FTP_FORBIDDEN b/errors/Traditional_Chinese/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Traditional_Chinese/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Traditional_Chinese/ERR_FTP_NOT_FOUND b/errors/Traditional_Chinese/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Traditional_Chinese/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The following URL could not be retrieved: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

      + diff --git a/errors/Traditional_Chinese/ERR_FTP_UNAVAILABLE b/errors/Traditional_Chinese/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Traditional_Chinese/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The FTP server was too busy while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Turkish/ERR_FTP_FORBIDDEN b/errors/Turkish/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..5f1b5e9843 --- /dev/null +++ b/errors/Turkish/ERR_FTP_FORBIDDEN @@ -0,0 +1,18 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +An FTP authentication failure occurred +while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/errors/Turkish/ERR_FTP_NOT_FOUND b/errors/Turkish/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..a9b3f04406 --- /dev/null +++ b/errors/Turkish/ERR_FTP_NOT_FOUND @@ -0,0 +1,21 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The following URL could not be retrieved: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      +This might be caused by an FTP URL with an absolute path (which does +not comply with RFC 1738). If this is the cause, then the file +can be found at %B. +

      + diff --git a/errors/Turkish/ERR_FTP_UNAVAILABLE b/errors/Turkish/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..d330368f3b --- /dev/null +++ b/errors/Turkish/ERR_FTP_UNAVAILABLE @@ -0,0 +1,17 @@ + +ERROR: The requested URL could not be retrieved + +

      ERROR

      +

      The requested URL could not be retrieved

      +
      +

      +The FTP server was too busy while trying to retrieve the URL: +%U +

      +Squid sent the following FTP command: +

      %f
      +and then received this reply +
      %F
      +
      %g
      +

      + diff --git a/include/autoconf.h.in b/include/autoconf.h.in index df338d5f97..3d3fa7045b 100644 --- a/include/autoconf.h.in +++ b/include/autoconf.h.in @@ -241,12 +241,20 @@ */ #define USE_IDENT 1 +/* + * If your system has statvfs(), and if it actually works! + */ +#undef HAVE_STATVFS + /* The number of bytes in a int. */ #undef SIZEOF_INT /* The number of bytes in a long. */ #undef SIZEOF_LONG +/* The number of bytes in a void *. */ +#undef SIZEOF_VOID_P + /* Define if you have the bcopy function. */ #undef HAVE_BCOPY @@ -265,6 +273,9 @@ /* Define if you have the getpagesize function. */ #undef HAVE_GETPAGESIZE +/* Define if you have the getrlimit function. */ +#undef HAVE_GETRLIMIT + /* Define if you have the getrusage function. */ #undef HAVE_GETRUSAGE @@ -355,9 +366,6 @@ /* Define if you have the srandom function. */ #undef HAVE_SRANDOM -/* Define if you have the statvfs function. */ -#undef HAVE_STATVFS - /* Define if you have the strerror function. */ #undef HAVE_STRERROR diff --git a/include/cache_snmp.h b/include/cache_snmp.h index 3571b0904d..87e118b87c 100644 --- a/include/cache_snmp.h +++ b/include/cache_snmp.h @@ -1,5 +1,5 @@ /* - * $Id: cache_snmp.h,v 1.22 1999/01/26 06:16:30 glenn Exp $ + * $Id: cache_snmp.h,v 1.23 1999/04/15 06:15:35 wessels Exp $ */ #ifdef SQUID_SNMP @@ -35,6 +35,9 @@ #define SQUIDMIB 1, 3, 6, 1, 4, 1, 3495, 1 #define LEN_SQUIDMIB 8 +#define INSTANCE 0 +#define TIME_INDEX 1, 5, 60 +#define TIME_INDEX_LEN 3 /* basic groups under .squid */ @@ -61,6 +64,9 @@ enum { SYS_END }; +#define LEN_SYS LEN_SQ_SYS + 1 +#define LEN_SYS_INST LEN_SQ_SYS + 2 + /* cacheConfig group */ @@ -75,6 +81,9 @@ enum { CONF_END }; +#define LEN_CONF LEN_SQ_CONF + 1 +#define LEN_CONF_INST LEN_SQ_CONF + 2 + enum { CONF_ST_START, CONF_ST_MMAXSZ, @@ -84,6 +93,9 @@ enum { CONF_ST_END }; +#define LEN_CONF_ST LEN_CONF + 1 +#define LEN_CONF_ST_INST LEN_CONF + 2 + /* cacheMesh group */ @@ -131,6 +143,14 @@ enum { /* cacheClientTable */ cacheNetwork group */ +enum { + NET_START, + NET_IP_CACHE, + NET_FQDN_CACHE, + NET_DNS_CACHE, + NET_END +}; + enum { IP_START, IP_ENT, @@ -172,7 +192,6 @@ enum { PERF_START, PERF_SYS, PERF_PROTO, - PERF_PEER, PERF_END }; diff --git a/include/version.h b/include/version.h index 987b03da74..8e5e3fe062 100644 --- a/include/version.h +++ b/include/version.h @@ -1,10 +1,10 @@ /* - * $Id: version.h,v 1.124 1999/02/02 23:57:40 wessels Exp $ + * $Id: version.h,v 1.125 1999/04/15 06:15:36 wessels Exp $ * * SQUID_VERSION - String for version id of this distribution */ #ifndef SQUID_VERSION -#define SQUID_VERSION "2.2.PRE3" +#define SQUID_VERSION "2.2.DEVEL4" #endif #ifndef SQUID_RELEASE_TIME diff --git a/lib/inet_ntoa.c b/lib/inet_ntoa.c new file mode 100644 index 0000000000..0c7f7e88d3 --- /dev/null +++ b/lib/inet_ntoa.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1983 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)inet_ntoa.c 5.6 (Berkeley) 2/24/91"; +#endif /* LIBC_SCCS and not lint */ + +/* + * Convert network-format internet address + * to base 256 d.d.d.d representation. + */ +#include +#include +#include +#include + +char * +inet_ntoa(struct in_addr in) +{ + static char b[18]; + register char *p; + + p = (char *) ∈ +#define UC(b) (((int)b)&0xff) + (void) snprintf(b, sizeof(b), + "%d.%d.%d.%d", UC(p[0]), UC(p[1]), UC(p[2]), UC(p[3])); + return (b); +} diff --git a/lib/rfc1123.c b/lib/rfc1123.c index 9c1132811f..d2fdb9963e 100644 --- a/lib/rfc1123.c +++ b/lib/rfc1123.c @@ -1,6 +1,6 @@ /* - * $Id: rfc1123.c,v 1.22 1999/04/08 07:09:00 wessels Exp $ + * $Id: rfc1123.c,v 1.23 1999/04/15 06:15:38 wessels Exp $ * * DEBUG: * AUTHOR: Harvest Derived @@ -93,9 +93,9 @@ make_month(const char *s) int i; char month[3]; - month[0] = toupper(*s); - month[1] = tolower(*(s + 1)); - month[2] = tolower(*(s + 2)); + month[0] = xtoupper(*s); + month[1] = xtolower(*(s + 1)); + month[2] = xtolower(*(s + 2)); for (i = 0; i < 12; i++) if (!strncmp(month_names[i], month, 3)) @@ -119,7 +119,7 @@ parse_rfc1123(const char *str) s++; /* or: Thu, 10 Jan 1993 01:29:59 GMT */ while (*s == ' ') s++; - if (isdigit(*s) && !isdigit(*(s + 1))) /* backoff if only one digit */ + if (xisdigit(*s) && !xisdigit(*(s + 1))) /* backoff if only one digit */ s--; if (strchr(s, '-')) { /* First format */ if ((int) strlen(s) < 18) diff --git a/lib/snprintf.c b/lib/snprintf.c index fe07d0ac7e..fd9c202e5e 100644 --- a/lib/snprintf.c +++ b/lib/snprintf.c @@ -1,5 +1,5 @@ /* - * $Id: snprintf.c,v 1.16 1998/09/29 16:47:53 wessels Exp $ + * $Id: snprintf.c,v 1.17 1999/04/15 06:15:38 wessels Exp $ */ /* ==================================================================== @@ -302,7 +302,7 @@ typedef struct buf_area buffy; #define STR_TO_DEC( str, num ) \ num = NUM( *str++ ) ; \ - while ( isdigit( *str ) ) \ + while ( xisdigit( *str ) ) \ { \ num *= 10 ; \ num += NUM( *str++ ) ; \ @@ -422,7 +422,7 @@ conv_fp(register char format, register double num, /* * Check for Infinity and NaN */ - if (isalpha(*p)) { + if (xisalpha(*p)) { *len = strlen(strcpy(buf, p)); *is_negative = FALSE; return (buf); @@ -577,7 +577,7 @@ format_converter(register buffy * odp, const char *fmt, /* * Try to avoid checking for flags, width or precision */ - if (isascii(*fmt) && !islower(*fmt)) { + if (xisascii(*fmt) && !xislower(*fmt)) { /* * Recognize flags: -, #, BLANK, + */ @@ -599,7 +599,7 @@ format_converter(register buffy * odp, const char *fmt, /* * Check if a width was specified */ - if (isdigit(*fmt)) { + if (xisdigit(*fmt)) { STR_TO_DEC(fmt, min_width); adjust_width = YES; } else if (*fmt == '*') { @@ -623,7 +623,7 @@ format_converter(register buffy * odp, const char *fmt, if (*fmt == '.') { adjust_precision = YES; fmt++; - if (isdigit(*fmt)) { + if (xisdigit(*fmt)) { STR_TO_DEC(fmt, precision); } else if (*fmt == '*') { precision = va_arg(ap, int); diff --git a/lib/util.c b/lib/util.c index 8a180f8fb4..1b378c8e6c 100644 --- a/lib/util.c +++ b/lib/util.c @@ -1,6 +1,6 @@ /* - * $Id: util.c,v 1.65 1998/11/12 06:30:16 wessels Exp $ + * $Id: util.c,v 1.66 1999/04/15 06:15:39 wessels Exp $ * * DEBUG: * AUTHOR: Harvest Derived @@ -678,7 +678,7 @@ xcountws(const char *str) { size_t count = 0; if (str) { - while (isspace(*str)) { + while (xisspace(*str)) { str++; count++; } diff --git a/src/HttpHdrExtField.cc b/src/HttpHdrExtField.cc index e9b5c6ecae..52b959536c 100644 --- a/src/HttpHdrExtField.cc +++ b/src/HttpHdrExtField.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHdrExtField.cc,v 1.6 1998/07/22 20:36:44 wessels Exp $ + * $Id: HttpHdrExtField.cc,v 1.7 1999/04/15 06:15:40 wessels Exp $ * * DEBUG: section 69 HTTP Header: Extension Field * AUTHOR: Alex Rousskov @@ -73,7 +73,7 @@ httpHdrExtFieldParseCreate(const char *field_start, const char *field_end) value_start = name_end + 1; /* skip ':' */ /* skip white space */ - while (value_start < field_end && isspace(*value_start)) + while (value_start < field_end && xisspace(*value_start)) value_start++; return httpHdrExtFieldDoCreate( diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 0fb55a4424..20c41f68cf 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.cc,v 1.61 1999/01/24 02:26:19 wessels Exp $ + * $Id: HttpHeader.cc,v 1.62 1999/04/15 06:15:40 wessels Exp $ * * DEBUG: section 55 HTTP Header * AUTHOR: Alex Rousskov @@ -819,7 +819,7 @@ httpHeaderGetAuth(const HttpHeader * hdr, http_hdr_type id, const char *authSche if (!l || strncasecmp(field, authScheme, l)) /* wrong scheme */ return NULL; field += l; - if (!isspace(*field)) /* wrong scheme */ + if (!xisspace(*field)) /* wrong scheme */ return NULL; /* skip white space */ field += xcountws(field); @@ -933,7 +933,7 @@ httpHeaderEntryParseCreate(const char *field_start, const char *field_end) else e->name = Headers[id].name; /* trim field value */ - while (value_start < field_end && isspace(*value_start)) + while (value_start < field_end && xisspace(*value_start)) value_start++; /* set field value */ stringLimitInit(&e->value, value_start, field_end - value_start); diff --git a/src/HttpHeaderTools.cc b/src/HttpHeaderTools.cc index ac572c0b01..310e6592ad 100644 --- a/src/HttpHeaderTools.cc +++ b/src/HttpHeaderTools.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHeaderTools.cc,v 1.24 1999/01/24 02:26:20 wessels Exp $ + * $Id: HttpHeaderTools.cc,v 1.25 1999/04/15 06:15:41 wessels Exp $ * * DEBUG: section 66 HTTP Header Tools * AUTHOR: Alex Rousskov @@ -241,7 +241,7 @@ strListGetItem(const String * str, char del, const char **item, int *ilen, const *pos = *item + strlen(*item); len = *pos - *item; /* *pos points to del or '\0' */ /* rtrim */ - while (len > 0 && isspace((*item)[len - 1])) + while (len > 0 && xisspace((*item)[len - 1])) len--; if (ilen) *ilen = len; @@ -268,7 +268,7 @@ httpHeaderParseInt(const char *start, int *value) { assert(value); *value = atoi(start); - if (!*value && !isdigit(*start)) { + if (!*value && !xisdigit(*start)) { debug(66, 2) ("failed to parse an int header field near '%s'\n", start); return 0; } @@ -308,7 +308,7 @@ httpHeaderTestParser(const char *hstr) hstr = p + 1; } /* skip invalid first line if any */ - if (isspace(*hstr)) { + if (xisspace(*hstr)) { const char *p = strchr(hstr, '\n'); if (p) hstr = p + 1; @@ -353,8 +353,8 @@ httpHeaderStrCmp(const char *h1, const char *h2, int len) if (!strncasecmp(h1, h2, len)) return 0; while (1) { - const char c1 = toupper(h1[len1 += xcountws(h1 + len1)]); - const char c2 = toupper(h2[len2 += xcountws(h2 + len2)]); + const char c1 = xtoupper(h1[len1 += xcountws(h1 + len1)]); + const char c2 = xtoupper(h2[len2 += xcountws(h2 + len2)]); if (c1 < c2) return -len1; if (c1 > c2) diff --git a/src/HttpStatusLine.cc b/src/HttpStatusLine.cc index f5d08fbe78..f3af87fb2d 100644 --- a/src/HttpStatusLine.cc +++ b/src/HttpStatusLine.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpStatusLine.cc,v 1.17 1998/08/14 19:25:12 wessels Exp $ + * $Id: HttpStatusLine.cc,v 1.18 1999/04/15 06:15:42 wessels Exp $ * * DEBUG: section 57 HTTP Status-line * AUTHOR: Alex Rousskov @@ -83,7 +83,7 @@ httpStatusLineParse(HttpStatusLine * sline, const char *start, const char *end) if (strncasecmp(start, "HTTP/", 5)) return 0; start += 5; - if (!isdigit(*start)) + if (!xisdigit(*start)) return 0; sline->version = atof(start); if (!(start = strchr(start, ' '))) diff --git a/src/acl.cc b/src/acl.cc index 875f8280c4..cb9f26a90a 100644 --- a/src/acl.cc +++ b/src/acl.cc @@ -1,6 +1,6 @@ /* - * $Id: acl.cc,v 1.199 1999/04/07 20:03:48 wessels Exp $ + * $Id: acl.cc,v 1.200 1999/04/15 06:15:43 wessels Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -673,6 +673,11 @@ aclParseAclLine(acl ** head) debug(28, 3) ("aclParseAclLine: Appending to '%s'\n", aclname); new_acl = 0; } + /* + * Here we set AclMatchedName in case we need to use it in a + * warning message in aclDomainCompare(). + */ + AclMatchedName = aclname; /* ugly */ switch (A->type) { case ACL_SRC_IP: case ACL_DST_IP: @@ -737,6 +742,10 @@ aclParseAclLine(acl ** head) fatal("Bad ACL type"); break; } + /* + * Clear AclMatchedName from our temporary hack + */ + AclMatchedName = NULL; /* ugly */ if (!new_acl) return; if (A->data == NULL) { @@ -997,7 +1006,7 @@ aclDecodeProxyAuth(const char *proxy_auth, char **user, char **password, char *b /* Trim trailing \n before decoding */ strtok(sent_auth, "\n"); /* Trim leading whitespace before decoding */ - while (isspace(*proxy_auth)) + while (xisspace(*proxy_auth)) proxy_auth++; cleartext = uudecode(sent_auth); xfree(sent_auth); @@ -1886,10 +1895,18 @@ aclDomainCompare(const void *data, splayNode * n) while (d1[l1] == d2[l2]) { if ((l1 == 0) && (l2 == 0)) return 0; /* d1 == d2 */ - if (l1-- == 0) + if (l1-- == 0) { + debug(28, 0) ("WARNING: %s is a subdomain of %s\n", d1, d2); + debug(28, 0) ("WARNING: This may break Splay tree searching\n"); + debug(28, 0) ("WARNING: You should remove '%s' from the ACL named '%s'\n", d2, AclMatchedName); return -1; /* d1 < d2 */ - if (l2-- == 0) + } + if (l2-- == 0) { + debug(28, 0) ("WARNING: %s is a subdomain of %s\n", d2, d1); + debug(28, 0) ("WARNING: This may break Splay tree searching\n"); + debug(28, 0) ("WARNING: You should remove '%s' from the ACL named '%s'\n", d1, AclMatchedName); return 1; /* d1 > d2 */ + } } return (d1[l1] - d2[l2]); } @@ -1908,7 +1925,7 @@ aclHostDomainCompare(const void *data, splayNode * n) l1 = strlen(h); l2 = strlen(d); /* h != d */ - while (h[l1] == d[l2]) { + while (xtolower(h[l1]) == xtolower(d[l2])) { if (l1 == 0) break; if (l2 == 0) @@ -1921,7 +1938,7 @@ aclHostDomainCompare(const void *data, splayNode * n) return -1; /* domain(h) < d */ if ((d[l2] == '.') || (l2 == 0)) return 1; /* domain(h) > d */ - return (h[l1] - d[l2]); + return (xtolower(h[l1]) - xtolower(d[l2])); } /* compare two network specs diff --git a/src/asn.cc b/src/asn.cc index 5f17c00244..b10a44366f 100644 --- a/src/asn.cc +++ b/src/asn.cc @@ -1,5 +1,5 @@ /* - * $Id: asn.cc,v 1.56 1999/01/29 21:28:07 wessels Exp $ + * $Id: asn.cc,v 1.57 1999/04/15 06:15:44 wessels Exp $ * * DEBUG: section 53 AS Number handling * AUTHOR: Duane Wessels, Kostas Anagnostakis @@ -238,10 +238,10 @@ asHandleReply(void *data, char *buf, ssize_t size) } s = buf; while (s - buf < size && *s != '\0') { - while (*s && isspace(*s)) + while (*s && xisspace(*s)) s++; for (t = s; *t; t++) { - if (isspace(*t)) + if (xisspace(*t)) break; } if (*t == '\0') { diff --git a/src/cache_cf.cc b/src/cache_cf.cc index f99d430b1c..62c6889c3c 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.325 1999/04/07 21:39:04 wessels Exp $ + * $Id: cache_cf.cc,v 1.326 1999/04/15 06:15:45 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -327,7 +327,7 @@ configDoConfigure(void) cbdataFree(Config.Wais.peer); Config.Wais.peer = memAllocate(MEM_PEER); cbdataAdd(Config.Wais.peer, peerDestroy, MEM_PEER); - Config.Wais.peer->host = Config.Wais.relayHost; + Config.Wais.peer->host = xstrdup(Config.Wais.relayHost); Config.Wais.peer->http_port = Config.Wais.relayPort; } } @@ -771,7 +771,7 @@ parse_cachedir(cacheSwap * swap) int size; int l1; int l2; - int read_only = 0; + unsigned int read_only = 0; SwapDir *tmp = NULL; if ((path = strtok(NULL, w_space)) == NULL) self_destruct(); @@ -801,10 +801,10 @@ parse_cachedir(cacheSwap * swap) debug(3, 1) ("Cache dir '%s' size changed to %d KB\n", path, size); tmp->max_size = size; - if (tmp->read_only != read_only) + if (tmp->flags.read_only != read_only) debug(3, 1) ("Cache dir '%s' now %s\n", path, read_only ? "Read-Only" : "Read-Write"); - tmp->read_only = read_only; + tmp->flags.read_only = read_only; return; } } @@ -824,7 +824,7 @@ parse_cachedir(cacheSwap * swap) tmp->max_size = size; tmp->l1 = l1; tmp->l2 = l2; - tmp->read_only = read_only; + tmp->flags.read_only = read_only; tmp->swaplog_fd = -1; swap->n_configured++; } @@ -886,7 +886,7 @@ dump_peer(StoreEntry * entry, const char *name, peer * p) p->http_port, p->icp.port); dump_peer_options(entry, p); - for (d = p->pinglist; d; d = d->next) { + for (d = p->peer_domain; d; d = d->next) { storeAppendPrintf(entry, "cache_peer_domain %s %s%s\n", p->host, d->do_ping ? null_string : "!", @@ -997,7 +997,8 @@ parse_peer(peer ** head) p->carp.hash += (p->carp.hash << 19) + *token; } #endif - cbdataAdd(p, peerDestroy, MEM_PEER); /* must preceed peerDigestCreate */ + /* This must preceed peerDigestCreate */ + cbdataAdd(p, peerDestroy, MEM_PEER); #if USE_CACHE_DIGESTS if (!p->options.no_digest) { p->digest = peerDigestCreate(p); @@ -1146,7 +1147,7 @@ parse_hostdomain(void) domain++; } l->domain = xstrdup(domain); - for (L = &(p->pinglist); *L; L = &((*L)->next)); + for (L = &(p->peer_domain); *L; L = &((*L)->next)); *L = l; } } diff --git a/src/cachemgr.cc b/src/cachemgr.cc index d599183d2d..3a456c5523 100644 --- a/src/cachemgr.cc +++ b/src/cachemgr.cc @@ -1,6 +1,6 @@ /* - * $Id: cachemgr.cc,v 1.84 1999/01/19 02:24:22 wessels Exp $ + * $Id: cachemgr.cc,v 1.85 1999/04/15 06:15:46 wessels Exp $ * * DEBUG: section 0 CGI Cache Manager * AUTHOR: Duane Wessels @@ -206,9 +206,9 @@ xstrtok(char **str, char del) *str = NULL; /* trim */ len = strlen(tok); - while (len && isspace(tok[len - 1])) + while (len && xisspace(tok[len - 1])) tok[--len] = '\0'; - while (isspace(*tok)) + while (xisspace(*tok)) tok++; return tok; } else @@ -273,8 +273,8 @@ parse_status_line(const char *sline, const char **statusStr) *statusStr = NULL; if (strncasecmp(sline, "HTTP/", 5) || !sp) return -1; - while (isspace(*++sp)); - if (!isdigit(*sp)) + while (xisspace(*++sp)); + if (!xisdigit(*sp)) return -1; if (statusStr) *statusStr = sp; @@ -725,6 +725,7 @@ static const char * make_auth_header(const cachemgr_request * req) { static char buf[1024]; + off_t l = 0; const char *str64; if (!req->passwd) return ""; @@ -734,6 +735,8 @@ make_auth_header(const cachemgr_request * req) req->passwd); str64 = base64_encode(buf); - snprintf(buf, sizeof(buf), "Authorization: Basic %s\r\n", str64); + l += snprintf(buf, sizeof(buf), "Authorization: Basic %s\r\n", str64); + l += snprintf(&buf[l], sizeof(buf) - l, + "Proxy-Authorization: Basic %s\r\n", str64); return buf; } diff --git a/src/cf.data.pre b/src/cf.data.pre index b0b48c0a57..829cfe5dc5 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -1,6 +1,6 @@ # -# $Id: cf.data.pre,v 1.146 1999/04/07 21:39:05 wessels Exp $ +# $Id: cf.data.pre,v 1.147 1999/04/15 06:15:47 wessels Exp $ # # # SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -2089,7 +2089,7 @@ DOC_START Lowering this value increases the total number of buckets and also the storage maintenance rate. The default is 20. -store_objects_per_bucket 20 +store_objects_per_bucket 50 DOC_END NAME: client_db @@ -2348,7 +2348,7 @@ DEFAULT: @DEFAULT_ERROR_DIR@ DOC_START If you wish to create your own versions of the default (English) error files, either to customise them to suit your - language or company copy the template english files to anther + language or company copy the template english files to another directory and point this tag at them. DOC_END @@ -2658,7 +2658,7 @@ TYPE: int DEFAULT: 8 LOC: Config.comm_incoming.http_min_poll DOC_START - Heavy voodoo here. I can't even beleve you are reading this. + Heavy voodoo here. I can't even believe you are reading this. Are you crazy? Don't even think about adjusting these unless you understand the algorithms in comm_select.c first! @@ -2734,21 +2734,33 @@ IFDEF: MULTICAST_MISS_STREAM TYPE: address LOC: Config.mcast_miss.addr DEFAULT: 255.255.255.255 -DOC_NONE +DOC_START + If you enable this option, every "cache miss" URL will + be sent out on the specified multicast address. + + Do not enable this option unless you are are absolutely + certain you understand what you are doing. +DOC_END NAME: mcast_miss_port IFDEF: MULTICAST_MISS_STREAM TYPE: ushort LOC: Config.mcast_miss.port DEFAULT: 3135 -DOC_NONE +DOC_START + This is the port number to be used in conjuction with + 'mcast_miss_addr'. +DOC_END NAME: mcast_miss_encode_key IFDEF: MULTICAST_MISS_STREAM TYPE: string LOC: Config.mcast_miss.encode_key DEFAULT: XXXXXXXXXXXXXXXX -DOC_NONE +DOC_START + The URLs that are sent in the multicast miss stream are + encrypted. This is the encryption key. +DOC_END NAME: prefer_direct TYPE: onoff @@ -2775,4 +2787,15 @@ DOC_START strip_query_terms on DOC_END +NAME: coredump_dir +TYPE: string +LOC: Config.coredump_dir +DEFAULT: none +DOC_START + By default Squid leaves core files in the first cache_dir + directory. If you set 'coredump_dir' to a directory + that exists, Squid will chdir() to that directory at startup + and coredump files will be left there. +DOC_END + EOF diff --git a/src/cf_gen.cc b/src/cf_gen.cc index c772c7ab05..4fe6633c23 100644 --- a/src/cf_gen.cc +++ b/src/cf_gen.cc @@ -1,5 +1,5 @@ /* - * $Id: cf_gen.cc,v 1.31 1999/01/24 04:29:43 wessels Exp $ + * $Id: cf_gen.cc,v 1.32 1999/04/15 06:15:47 wessels Exp $ * * DEBUG: none * AUTHOR: Max Okumoto @@ -177,17 +177,17 @@ main(int argc, char *argv[]) (void) 0; } else if (!strncmp(buff, "COMMENT:", 8)) { ptr = buff + 8; - while (isspace(*ptr)) + while (xisspace(*ptr)) ptr++; curr->comment = xstrdup(ptr); } else if (!strncmp(buff, "DEFAULT:", 8)) { ptr = buff + 8; - while (isspace(*ptr)) + while (xisspace(*ptr)) ptr++; curr->default_value = xstrdup(ptr); } else if (!strncmp(buff, "DEFAULT_IF_NONE:", 16)) { ptr = buff + 16; - while (isspace(*ptr)) + while (xisspace(*ptr)) ptr++; curr->default_if_none = xstrdup(ptr); } else if (!strncmp(buff, "LOC:", 4)) { diff --git a/src/client.cc b/src/client.cc index ccab450c7e..6c6d351fd6 100644 --- a/src/client.cc +++ b/src/client.cc @@ -1,8 +1,6 @@ - - /* - * $Id: client.cc,v 1.82 1999/04/07 22:06:45 wessels Exp $ + * $Id: client.cc,v 1.83 1999/04/15 06:15:48 wessels Exp $ * * DEBUG: section 0 WWW Client * AUTHOR: Harvest Derived diff --git a/src/client_db.cc b/src/client_db.cc index a1792b9ba2..6964882345 100644 --- a/src/client_db.cc +++ b/src/client_db.cc @@ -1,6 +1,6 @@ /* - * $Id: client_db.cc,v 1.43 1998/12/05 00:54:18 wessels Exp $ + * $Id: client_db.cc,v 1.44 1999/04/15 06:15:49 wessels Exp $ * * DEBUG: section 0 Client Database * AUTHOR: Duane Wessels @@ -201,28 +201,31 @@ clientdbFreeMemory(void) } #if SQUID_SNMP -int -meshCtblGetRowFn(oid * New, oid * Oid) +struct in_addr * +client_entry(struct in_addr *current) { ClientInfo *c = NULL; + char *key; - if (!Oid[0] && !Oid[1] && !Oid[2] && !Oid[3]) { + if (current) { + key = inet_ntoa(*current); hash_first(client_table); + while ((c = (ClientInfo *) hash_next(client_table))) { + if (!strcmp(key, c->key)) + break; + } c = (ClientInfo *) hash_next(client_table); - hash_last(client_table); } else { - char key[15]; - snprintf(key, sizeof(key), "%d.%d.%d.%d", Oid[0], Oid[1], Oid[2], Oid[3]); - c = (ClientInfo *) hash_lookup(client_table, key); - if (NULL != c) - c = c->next; + hash_first(client_table); + c = (ClientInfo *) hash_next(client_table); } - if (!c) - return 0; - addr2oid(c->addr, New); - return 1; -} + hash_last(client_table); + if (c) + return (&c->addr); + else + return (NULL); +} variable_list * snmp_meshCtblFn(variable_list * Var, snint * ErrP) @@ -236,6 +239,9 @@ snmp_meshCtblFn(variable_list * Var, snint * ErrP) Answer = snmp_var_new(Var->name, Var->name_length); *ErrP = SNMP_ERR_NOERROR; + debug(49, 6) ("snmp_meshCtblFn: Current : \n"); + snmpDebugOid(6, Var->name, Var->name_length); + snprintf(key, sizeof(key), "%d.%d.%d.%d", Var->name[LEN_SQ_NET + 3], Var->name[LEN_SQ_NET + 4], Var->name[LEN_SQ_NET + 5], Var->name[LEN_SQ_NET + 6]); debug(49, 5) ("snmp_meshCtblFn: [%s] requested!\n", key); diff --git a/src/client_side.cc b/src/client_side.cc index 250622f476..953039f869 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -1,6 +1,6 @@ /* - * $Id: client_side.cc,v 1.442 1999/03/24 04:16:08 rousskov Exp $ + * $Id: client_side.cc,v 1.443 1999/04/15 06:15:50 wessels Exp $ * * DEBUG: section 33 Client-side Routines * AUTHOR: Duane Wessels @@ -201,10 +201,16 @@ clientAccessCheckDone(int answer, void *data) debug(33, 5) ("Access Denied: %s\n", http->uri); debug(33, 5) ("AclMatchedName = %s\n", AclMatchedName ? AclMatchedName : ""); + /* + * NOTE: get page_id here, based on AclMatchedName because + * if USE_DELAY_POOLS is enabled, then AclMatchedName gets + * clobbered in the clientCreateStoreEntry() call + * just below. Pedro Ribeiro + */ + page_id = aclGetDenyInfoPage(&Config.denyInfoList, AclMatchedName); http->log_type = LOG_TCP_DENIED; http->entry = clientCreateStoreEntry(http, http->request->method, null_request_flags); - page_id = aclGetDenyInfoPage(&Config.denyInfoList, AclMatchedName); if (answer == ACCESS_REQ_PROXY_AUTH || aclIsProxyAuth(AclMatchedName)) { if (!http->flags.accel) { /* Proxy authorisation needed */ @@ -291,13 +297,18 @@ clientProcessExpired(void *data) } http->request->flags.refresh = 1; http->old_entry = http->entry; + /* + * Assert that 'http' is already a client of old_entry. If + * it is not, then the beginning of the object data might get + * freed from memory before we need to access it. + */ + assert(storeClientListSearch(http->old_entry->mem_obj, http)); entry = storeCreateEntry(url, http->log_uri, http->request->flags, http->request->method); /* NOTE, don't call storeLockObject(), storeCreateEntry() does it */ storeClientListAdd(entry, http); - storeClientListAdd(http->old_entry, http); #if DELAY_POOLS /* delay_id is already set on original store client */ delaySetStoreClient(entry, http, delayClient(http->request)); @@ -364,17 +375,23 @@ clientHandleIMSReply(void *data, char *buf, ssize_t size) { clientHttpRequest *http = data; StoreEntry *entry = http->entry; - MemObject *mem = entry->mem_obj; + MemObject *mem; const char *url = storeUrl(entry); int unlink_request = 0; StoreEntry *oldentry; int recopy = 1; - const http_status status = mem->reply->sline.status; + http_status status; debug(33, 3) ("clientHandleIMSReply: %s, %d bytes\n", url, (int) size); + if (entry == NULL) { + memFree(buf, MEM_CLIENT_SOCK_BUF); + return; + } if (size < 0 && !EBIT_TEST(entry->flags, ENTRY_ABORTED)) { memFree(buf, MEM_CLIENT_SOCK_BUF); return; } + mem = entry->mem_obj; + status = mem->reply->sline.status; if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { debug(33, 3) ("clientHandleIMSReply: ABORTED '%s'\n", url); /* We have an existing entry, but failed to validate it */ @@ -605,20 +622,22 @@ httpRequestFree(void *data) clientHttpRequest *http = data; clientHttpRequest **H; ConnStateData *conn = http->conn; - StoreEntry *entry = http->entry; + StoreEntry *e; request_t *request = http->request; MemObject *mem = NULL; - debug(33, 3) ("httpRequestFree: %s\n", storeUrl(entry)); + debug(33, 3) ("httpRequestFree: %s\n", storeUrl(http->entry)); if (!clientCheckTransferDone(http)) { - if (entry) - storeUnregister(entry, http); - entry = http->entry; /* reset, IMS might have changed it */ - if (entry && entry->ping_status == PING_WAITING) - storeReleaseRequest(entry); + if ((e = http->entry)) { + http->entry = NULL; + storeUnregister(e, http); + storeUnlockObject(e); + } + if (http->entry && http->entry->ping_status == PING_WAITING) + storeReleaseRequest(http->entry); } assert(http->log_type < LOG_TYPE_MAX); - if (entry) - mem = entry->mem_obj; + if (http->entry) + mem = http->entry->mem_obj; if (http->out.size || http->log_type) { http->al.icp.opcode = ICP_INVALID; http->al.url = http->log_uri; @@ -662,17 +681,17 @@ httpRequestFree(void *data) safe_free(http->al.headers.reply); safe_free(http->redirect.location); stringClean(&http->range_iter.boundary); - if (entry) { + if ((e = http->entry)) { http->entry = NULL; - storeUnregister(entry, http); - storeUnlockObject(entry); + storeUnregister(e, http); + storeUnlockObject(e); } /* old_entry might still be set if we didn't yet get the reply * code in clientHandleIMSReply() */ - if (http->old_entry) { - storeUnregister(http->old_entry, http); - storeUnlockObject(http->old_entry); + if ((e = http->old_entry)) { http->old_entry = NULL; + storeUnregister(e, http); + storeUnlockObject(e); } requestUnlink(http->request); assert(http != http->next); @@ -2020,19 +2039,19 @@ parseHttpRequest(ConnStateData * conn, method_t * method_p, int *status, debug(33, 1) ("parseHttpRequest: Missing URL\n"); return parseHttpRequestAbort(conn, "error:missing-url"); } - while (isspace(*url)) + while (xisspace(*url)) url++; t = url + strlen(url); assert(*t == '\0'); token = NULL; while (t > url) { t--; - if (isspace(*t) && !strncmp(t + 1, "HTTP/", 5)) { + if (xisspace(*t) && !strncmp(t + 1, "HTTP/", 5)) { token = t + 1; break; } } - while (t > url && isspace(*t)) + while (t > url && xisspace(*t)) *(t--) = '\0'; debug(33, 5) ("parseHttpRequest: URI is '%s'\n", url); if (token == NULL) { @@ -2247,7 +2266,7 @@ clientReadRequest(int fd, void *data) while (conn->in.offset > 0) { int nrequests; size_t req_line_sz; - while (conn->in.offset > 0 && isspace(conn->in.buf[0])) { + while (conn->in.offset > 0 && xisspace(conn->in.buf[0])) { xmemmove(conn->in.buf, conn->in.buf + 1, conn->in.offset - 1); conn->in.offset--; } @@ -2316,9 +2335,9 @@ clientReadRequest(int fd, void *data) request->flags.accelerated = http->flags.accel; if (!http->flags.internal) { if (internalCheck(strBuf(request->urlpath))) { - if (0 == strcasecmp(request->host, internalHostname())) { - if (request->port == Config.Port.http->i) - http->flags.internal = 1; + if (0 == strcasecmp(request->host, internalHostname()) && + request->port == Config.Port.http->i) { + http->flags.internal = 1; } else if (internalStaticCheck(strBuf(request->urlpath))) { xstrncpy(request->host, internalHostname(), SQUIDHOSTNAMELEN); request->port = Config.Port.http->i; @@ -2512,6 +2531,7 @@ httpAccept(int sock, void *data) commSetTimeout(fd, Config.Timeout.request, requestTimeout, connState); #if USE_IDENT identChecklist.src_addr = peer.sin_addr; + identChecklist.my_addr = me.sin_addr; if (aclCheckFast(Config.accessList.identLookup, &identChecklist)) identStart(&me, &peer, clientIdentDone, connState); #endif diff --git a/src/debug.cc b/src/debug.cc index 4fa3c5c789..1d3d600a5d 100644 --- a/src/debug.cc +++ b/src/debug.cc @@ -1,6 +1,6 @@ /* - * $Id: debug.cc,v 1.74 1999/01/11 21:55:38 wessels Exp $ + * $Id: debug.cc,v 1.75 1999/04/15 06:15:51 wessels Exp $ * * DEBUG: section 0 Debug Routines * AUTHOR: Harvest Derived @@ -115,7 +115,6 @@ debugArg(const char *arg) int s = 0; int l = 0; int i; - if (!strncasecmp(arg, "ALL", 3)) { s = -1; arg += 4; @@ -124,7 +123,12 @@ debugArg(const char *arg) while (*arg && *arg++ != ','); } l = atoi(arg); - + assert(s >= -1); + assert(s < MAX_DEBUG_SECTIONS); + if (l < 0) + l = 0; + if (l > 10) + l = 10; if (s >= 0) { debugLevels[s] = l; return; diff --git a/src/defines.h b/src/defines.h index 8f5736640d..b4f17831b6 100644 --- a/src/defines.h +++ b/src/defines.h @@ -1,6 +1,6 @@ /* - * $Id: defines.h,v 1.71 1999/02/02 23:57:22 wessels Exp $ + * $Id: defines.h,v 1.72 1999/04/15 06:15:52 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -201,7 +201,7 @@ #define SwapMetaType(x) (char)x[0] #define SwapMetaSize(x) &x[sizeof(char)] #define SwapMetaData(x) &x[STORE_META_TLD_START] -#define STORE_HDR_METASIZE (4*sizeof(time_t)+2*sizeof(u_short)+sizeof(int)) +#define STORE_HDR_METASIZE (4*sizeof(time_t)+2*sizeof(u_short)+sizeof(size_t)) #define STORE_ENTRY_WITH_MEMOBJ 1 #define STORE_ENTRY_WITHOUT_MEMOBJ 0 diff --git a/src/delay_pools.cc b/src/delay_pools.cc index 13d8f4d145..1255661f0d 100644 --- a/src/delay_pools.cc +++ b/src/delay_pools.cc @@ -1,6 +1,6 @@ /* - * $Id: delay_pools.cc,v 1.7 1999/01/29 23:39:17 wessels Exp $ + * $Id: delay_pools.cc,v 1.8 1999/04/15 06:15:52 wessels Exp $ * * DEBUG: section 77 Delay Pools * AUTHOR: David Luyer @@ -83,9 +83,40 @@ typedef union _delayPool delayPool; static delayPool *delay_data = NULL; static fd_set delay_no_delay; static time_t delay_pools_last_update = 0; +static hash_table *delay_id_ptr_hash = NULL; static OBJH delayPoolStats; +static unsigned int +delayIdPtrHash(const void *key, unsigned int n) +{ + /* Hashes actual POINTER VALUE. + * Assumes <= 256 hash buckets & even hash size. + * Assumes the most variation in pointers to inside + * medium size objects occurs in the 2nd and 3rd + * least significant bytes. + */ + const char *ptr = (char *) &key; +#if SIZEOF_VOID_P == 4 + return (ptr[1] ^ ptr[2]) & (n - 1); +#elif SIZEOF_VOID_P == 8 +#if WORDS_BIGENDIAN + return (ptr[5] ^ ptr[6]) & (n - 1); +#else + return (ptr[1] ^ ptr[2]) & (n - 1); +#endif +#else +#error What kind of a sick architecture are you on anyway? +#endif +} + +static int +delayIdPtrHashCmp(const void *a, const void *b) +{ + /* Sort by POINTER VALUE. */ + return b - a; +} + void delayPoolsInit(void) { @@ -97,16 +128,61 @@ delayPoolsInit(void) void delayInitDelayData(unsigned short pools) { - if (pools) { - delay_data = xcalloc(pools, sizeof(delayPool)); - eventAdd("delayPoolsUpdate", delayPoolsUpdate, NULL, 1.0, 1); - } + if (!pools) + return; + delay_data = xcalloc(pools, sizeof(delayPool)); + eventAdd("delayPoolsUpdate", delayPoolsUpdate, NULL, 1.0, 1); + delay_id_ptr_hash = hash_create(delayIdPtrHashCmp, 256, delayIdPtrHash); +} + +static void +delayIdZero(void *hlink) +{ + hash_link *h = hlink; + delay_id *id = (delay_id *) h->key; + *id = 0; + xfree(h); } void delayFreeDelayData() { safe_free(delay_data); + if (!delay_id_ptr_hash) + return; + hashFreeItems(delay_id_ptr_hash, delayIdZero); + hashFreeMemory(delay_id_ptr_hash); + delay_id_ptr_hash = NULL; +} + +void +delayRegisterDelayIdPtr(delay_id * loc) +{ + hash_link *lnk; + if (!delay_id_ptr_hash) + return; + lnk = xmalloc(sizeof(hash_link)); + lnk->key = (char *) loc; + hash_join(delay_id_ptr_hash, lnk); +} + +void +delayUnregisterDelayIdPtr(delay_id * loc) +{ + hash_link *lnk; + if (!delay_id_ptr_hash) + return; + /* + * If we went through a reconfigure, then all the delay_id's + * got set to zero, and they were removed from our hash + * table. + */ + if (*loc == 0) + return; + lnk = hash_lookup(delay_id_ptr_hash, loc); + assert(lnk); + hash_remove_link(delay_id_ptr_hash, lnk); + xxfree(lnk); } void @@ -189,7 +265,7 @@ delayId(unsigned short pool, unsigned short position) } delay_id -delayClient(request_t *r) +delayClient(request_t * r) { aclCheck_t ch; int i; diff --git a/src/disk.cc b/src/disk.cc index 59d416ef60..25e914566d 100644 --- a/src/disk.cc +++ b/src/disk.cc @@ -1,7 +1,7 @@ /* - * $Id: disk.cc,v 1.141 1999/01/29 17:33:05 wessels Exp $ + * $Id: disk.cc,v 1.142 1999/04/15 06:15:53 wessels Exp $ * * DEBUG: section 6 Disk I/O Routines * AUTHOR: Harvest Derived @@ -75,6 +75,7 @@ file_open(const char *path, int mode, FOCB * callback, void *callback_data, void mode |= SQUID_NONBLOCK; /* Open file */ + Opening_FD++; #if USE_ASYNC_IO if (callback != NULL) { aioOpen(path, mode, 0644, fileOpenComplete, ctrlp, tag); @@ -97,6 +98,7 @@ fileOpenComplete(int unused, void *data, int fd, int errcode) debug(6, 5) ("fileOpenComplete: FD %d, data %p, errcode %d\n", fd, data, errcode); Counter.syscalls.disk.opens++; + Opening_FD--; if (fd == -2 && errcode == -2) { /* Cancelled - clean up */ if (ctrlp->callback) (ctrlp->callback) (ctrlp->callback_data, fd, errcode); diff --git a/src/enums.h b/src/enums.h index 2bd92f2bca..2e8f909063 100644 --- a/src/enums.h +++ b/src/enums.h @@ -1,6 +1,6 @@ /* - * $Id: enums.h,v 1.147 1999/04/14 05:16:15 wessels Exp $ + * $Id: enums.h,v 1.148 1999/04/15 06:15:54 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -81,6 +81,9 @@ typedef enum { ERR_FTP_PUT_CREATED, /* !error,a note that the file was created */ ERR_FTP_PUT_MODIFIED, /* modified, !created */ ERR_FTP_PUT_ERROR, + ERR_FTP_NOT_FOUND, + ERR_FTP_FORBIDDEN, + ERR_FTP_UNAVAILABLE, ERR_ONLY_IF_CACHED_MISS, /* failure to satisfy only-if-cached request */ ERR_MAX } err_type; diff --git a/src/fd.cc b/src/fd.cc index caee0cbb94..2deff2c822 100644 --- a/src/fd.cc +++ b/src/fd.cc @@ -1,6 +1,6 @@ /* - * $Id: fd.cc,v 1.35 1999/01/21 21:13:01 wessels Exp $ + * $Id: fd.cc,v 1.36 1999/04/15 06:15:54 wessels Exp $ * * DEBUG: section 51 Filedescriptor Functions * AUTHOR: Duane Wessels @@ -173,7 +173,7 @@ fdDumpOpen(void) int fdNFree(void) { - return Squid_MaxFD - Number_FD; + return Squid_MaxFD - Number_FD - Opening_FD; } /* Called when we runs out of file descriptors */ diff --git a/src/forward.cc b/src/forward.cc index 8057a73dad..8bf0b63cb6 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -1,6 +1,6 @@ /* - * $Id: forward.cc,v 1.55 1999/04/07 21:17:50 wessels Exp $ + * $Id: forward.cc,v 1.56 1999/04/15 06:15:55 wessels Exp $ * * DEBUG: section 17 Request Forwarding * AUTHOR: Duane Wessels @@ -367,18 +367,7 @@ fwdReforward(FwdState * fwdState) } s = e->mem_obj->reply->sline.status; debug(17, 3) ("fwdReforward: status %d\n", (int) s); - switch (s) { - case HTTP_FORBIDDEN: - case HTTP_INTERNAL_SERVER_ERROR: - case HTTP_NOT_IMPLEMENTED: - case HTTP_BAD_GATEWAY: - case HTTP_SERVICE_UNAVAILABLE: - case HTTP_GATEWAY_TIMEOUT: - return 1; - default: - return 0; - } - /* NOTREACHED */ + return fwdReforwardableStatus(s); } /* PUBLIC FUNCTIONS */ @@ -465,6 +454,8 @@ fwdCheckDeferRead(int fd, void *data) if (delayMostBytesWanted(mem, 1) == 0) return 1; #endif + if (EBIT_TEST(e->flags, ENTRY_FWD_HDR_WAIT)) + return 0; if (mem->inmem_hi - storeLowestMemReaderOffset(e) < READ_AHEAD_GAP) return 0; return 1; @@ -583,3 +574,20 @@ fwdStats(StoreEntry * s) storeAppendPrintf(s, "\n"); } } + +int +fwdReforwardableStatus(http_status s) +{ + switch (s) { + case HTTP_FORBIDDEN: + case HTTP_INTERNAL_SERVER_ERROR: + case HTTP_NOT_IMPLEMENTED: + case HTTP_BAD_GATEWAY: + case HTTP_SERVICE_UNAVAILABLE: + case HTTP_GATEWAY_TIMEOUT: + return 1; + default: + return 0; + } + /* NOTREACHED */ +} diff --git a/src/ftp.cc b/src/ftp.cc index 2d3c2c38b3..2b7f9452d7 100644 --- a/src/ftp.cc +++ b/src/ftp.cc @@ -1,6 +1,6 @@ /* - * $Id: ftp.cc,v 1.280 1999/02/06 08:44:13 wessels Exp $ + * $Id: ftp.cc,v 1.281 1999/04/15 06:15:56 wessels Exp $ * * DEBUG: section 9 File Transfer Protocol (FTP) * AUTHOR: Harvest Derived @@ -147,6 +147,7 @@ typedef void (FTPSM) (FtpStateData *); static CNCB ftpPasvCallback; static PF ftpDataRead; static PF ftpStateFree; +static PF ftpPumpClosedData; static PF ftpTimeout; static PF ftpReadControlReply; static CWCB ftpWriteCommandCallback; @@ -481,7 +482,7 @@ ftpListParseParts(const char *buf, struct _ftp_flags flags) tokens[n_tokens++] = xstrdup(t); xfree(xbuf); /* locate the Month field */ - for (i = 3; i < n_tokens - 3; i++) { + for (i = 3; i < n_tokens - 2; i++) { if (!is_month(tokens[i])) /* Month */ continue; if (!sscanf(tokens[i - 1], SCAN_FTP1, sbuf)) /* Size */ @@ -535,7 +536,7 @@ ftpListParseParts(const char *buf, struct _ftp_flags flags) /* Directory.. name begins with first printable after */ ct = strstr(buf, tokens[2]); ct += strlen(tokens[2]); - while (isspace(*ct)) + while (xisspace(*ct)) ct++; if (!*ct) ct = NULL; @@ -666,8 +667,8 @@ ftpHtmlifyListEntry(char *line, FtpStateData * ftpState) if ((parts = ftpListParseParts(line, ftpState->flags)) == NULL) { char *p; snprintf(html, 8192, "%s\n", line); - for (p = line; *p && isspace(*p); p++); - if (*p && !isspace(*p)) + for (p = line; *p && xisspace(*p); p++); + if (*p && !xisspace(*p)) ftpState->flags.listformat_unknown = 1; return html; } @@ -2227,7 +2228,26 @@ ftpFail(FtpStateData * ftpState) break; } } - err = errorCon(ERR_FTP_FAILURE, HTTP_INTERNAL_SERVER_ERROR); + /* Translate FTP errors into HTTP errors */ + err = NULL; + switch (ftpState->state) { + case SENT_USER: + case SENT_PASS: + if (ftpState->ctrl.replycode > 500) + err = errorCon(ERR_FTP_FORBIDDEN, HTTP_FORBIDDEN); + else if (ftpState->ctrl.replycode == 421) + err = errorCon(ERR_FTP_UNAVAILABLE, HTTP_SERVICE_UNAVAILABLE); + break; + case SENT_CWD: + case SENT_RETR: + if (ftpState->ctrl.replycode == 550) + err = errorCon(ERR_FTP_NOT_FOUND, HTTP_NOT_FOUND); + break; + default: + break; + } + if (err == NULL) + err = errorCon(ERR_FTP_FAILURE, HTTP_BAD_GATEWAY); err->request = requestLink(ftpState->request); err->ftp_server_msg = ftpState->ctrl.message; if (ftpState->old_request) @@ -2246,10 +2266,33 @@ ftpFail(FtpStateData * ftpState) comm_close(ftpState->ctrl.fd); } +void +ftpPumpClosedData(int data_fd, void *data) +{ + FtpStateData *ftpState = data; + assert(data_fd == ftpState->data.fd); + /* + * Ugly pump module closed our server-side. Deal with it. + * The data FD is already closed, so just set it to -1. + */ + ftpState->data.fd = -1; + /* + * Currently, thats all we have to do. Because the upload failed, + * storeAbort() will be called on the reply entry. That will + * call fwdAbort, which closes ftpState->ctrl.fd and then + * ftpStateFree gets called. + */ +} + static void ftpPutStart(FtpStateData * ftpState) { debug(9, 3) ("ftpPutStart\n"); + /* + * sigh, we need this gross hack to detect when ugly pump module + * aborts and wants to close the server-side. + */ + comm_add_close_handler(ftpState->data.fd, ftpPumpClosedData, ftpState); pumpStart(ftpState->data.fd, ftpState->fwd, ftpPutTransferDone, ftpState); } @@ -2258,6 +2301,7 @@ ftpPutTransferDone(int fd, char *bufnotused, size_t size, int errflag, void *dat { FtpStateData *ftpState = data; if (ftpState->data.fd >= 0) { + comm_remove_close_handler(fd, ftpPumpClosedData, ftpState); comm_close(ftpState->data.fd); ftpState->data.fd = -1; } diff --git a/src/globals.h b/src/globals.h index 2f6f3d1c0c..0dfbabfa41 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1,6 +1,6 @@ /* - * $Id: globals.h,v 1.76 1999/01/21 21:10:33 wessels Exp $ + * $Id: globals.h,v 1.77 1999/04/15 06:15:57 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -66,6 +66,7 @@ extern dnsStatData DnsStats; extern fde *fd_table; /* NULL */ extern int Biggest_FD; /* -1 */ extern int Number_FD; /* 0 */ +extern int Opening_FD; /* 0 */ extern int HttpSockets[MAXHTTPPORTS]; extern int NDnsServersAlloc; /* 0 */ extern int NHttpSockets; /* 0 */ diff --git a/src/http.cc b/src/http.cc index 2279230f5a..743cb4965a 100644 --- a/src/http.cc +++ b/src/http.cc @@ -1,6 +1,6 @@ /* - * $Id: http.cc,v 1.346 1999/01/29 23:39:19 wessels Exp $ + * $Id: http.cc,v 1.347 1999/04/15 06:15:58 wessels Exp $ * * DEBUG: section 11 Hypertext Transfer Protocol (HTTP) * AUTHOR: Harvest Derived @@ -42,13 +42,12 @@ static const char *const crlf = "\r\n"; -static CNCB httpConnectDone; static CWCB httpSendComplete; static CWCB httpSendRequestEntry; static CWCB httpSendRequestEntryDone; static PF httpReadReply; -static PF httpSendRequest; +static void httpSendRequest(HttpStateData *); static PF httpStateFree; static PF httpTimeout; static void httpCacheNegatively(StoreEntry *); @@ -385,6 +384,15 @@ httpPconnTransferDone(HttpStateData * httpState) /* * What does the reply have to say about keep-alive? */ + /* + * XXX BUG? + * If the origin server (HTTP/1.0) does not send a keep-alive + * header, but keeps the connection open anyway, what happens? + * We'll return here and http.c waits for an EOF before changing + * store_status to STORE_OK. Combine this with ENTRY_FWD_HDR_WAIT + * and an error status code, and we might have to wait until + * the server times out the socket. + */ if (!reply->keep_alive) return 0; debug(11, 5) ("httpPconnTransferDone: content_length=%d\n", @@ -476,7 +484,7 @@ httpReadReply(int fd, void *data) } if (!httpState->reply_hdr && len > 0) { /* Skip whitespace */ - while (len > 0 && isspace(*buf)) + while (len > 0 && xisspace(*buf)) xmemmove(buf, buf + 1, len--); if (len == 0) { /* Continue to read... */ @@ -523,10 +531,11 @@ httpReadReply(int fd, void *data) httpProcessReplyHeader(httpState, buf, len); if (httpState->reply_hdr_state == 2) { http_status s = entry->mem_obj->reply->sline.status; - /* If its "successful" reply, allow the client - * to get it + /* + * If its not a reply that we will re-forward, then + * allow the client to get it. */ - if (s >= 200 && s < 300) + if (!fwdReforwardableStatus(s)) EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT); } } @@ -582,10 +591,16 @@ httpSendComplete(int fd, char *bufnotused, size_t size, int errflag, void *data) return; } else { /* Schedule read reply. */ - commSetSelect(fd, - COMM_SELECT_READ, - httpReadReply, - httpState, 0); + commSetSelect(fd, COMM_SELECT_READ, httpReadReply, httpState, 0); + /* + * Set the read timeout here because it hasn't been set yet. + * We only set the read timeout after the request has been + * fully written to the server-side. If we start the timeout + * after connection establishment, then we are likely to hit + * the timeout for POST/PUT requests that have very large + * request bodies. + */ + commSetTimeout(fd, Config.Timeout.read, httpTimeout, httpState); commSetDefer(fd, fwdCheckDeferRead, entry); } } @@ -789,9 +804,8 @@ httpBuildRequestPrefix(request_t * request, } /* This will be called when connect completes. Write request. */ static void -httpSendRequest(int fd, void *data) +httpSendRequest(HttpStateData * httpState) { - HttpStateData *httpState = data; MemBuf mb; request_t *req = httpState->request; StoreEntry *entry = httpState->entry; @@ -799,7 +813,7 @@ httpSendRequest(int fd, void *data) peer *p = httpState->peer; CWCB *sendHeaderDone; - debug(11, 5) ("httpSendRequest: FD %d: httpState %p.\n", fd, httpState); + debug(11, 5) ("httpSendRequest: FD %d: httpState %p.\n", httpState->fd, httpState); if (pumpMethod(req->method)) sendHeaderDone = httpSendRequestEntry; @@ -834,9 +848,10 @@ httpSendRequest(int fd, void *data) &mb, cfd, httpState->flags); - debug(11, 6) ("httpSendRequest: FD %d:\n%s\n", fd, mb.buf); - comm_write_mbuf(fd, mb, sendHeaderDone, httpState); + debug(11, 6) ("httpSendRequest: FD %d:\n%s\n", httpState->fd, mb.buf); + comm_write_mbuf(httpState->fd, mb, sendHeaderDone, httpState); } + void httpStart(FwdState * fwd) { @@ -886,37 +901,12 @@ httpStart(FwdState * fwd) comm_add_close_handler(fd, httpStateFree, httpState); Counter.server.all.requests++; Counter.server.http.requests++; - httpConnectDone(fd, COMM_OK, httpState); -} - -static void -httpConnectDone(int fd, int status, void *data) -{ - HttpStateData *httpState = data; - request_t *request = httpState->request; - StoreEntry *entry = httpState->entry; - ErrorState *err; - if (status == COMM_ERR_DNS) { - debug(11, 4) ("httpConnectDone: Unknown host: %s\n", request->host); - err = errorCon(ERR_DNS_FAIL, HTTP_SERVICE_UNAVAILABLE); - err->dnsserver_msg = xstrdup(dns_error_message); - err->request = requestLink(httpState->orig_request); - errorAppendEntry(entry, err); - comm_close(fd); - } else if (status != COMM_OK) { - err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE); - err->xerrno = errno; - err->host = xstrdup(request->host); - err->port = request->port; - err->request = requestLink(httpState->orig_request); - errorAppendEntry(entry, err); - if (httpState->peer) - peerCheckConnectStart(httpState->peer); - comm_close(fd); - } else { - commSetSelect(fd, COMM_SELECT_WRITE, httpSendRequest, httpState, 0); - commSetTimeout(fd, Config.Timeout.read, httpTimeout, httpState); - } + httpSendRequest(httpState); + /* + * We used to set the read timeout here, but not any more. + * Now its set in httpSendComplete() after the full request, + * including request body, has been written to the server. + */ } static void @@ -942,6 +932,10 @@ httpSendRequestEntry(int fd, char *bufnotused, size_t size, int errflag, void *d comm_close(fd); return; } + if (EBIT_TEST(entry->flags, ENTRY_ABORTED)) { + comm_close(fd); + return; + } pumpStart(fd, httpState->fwd, httpSendRequestEntryDone, httpState); } diff --git a/src/ident.cc b/src/ident.cc index c33776874c..4110d0c28e 100644 --- a/src/ident.cc +++ b/src/ident.cc @@ -1,6 +1,6 @@ /* - * $Id: ident.cc,v 1.49 1999/01/24 05:24:22 wessels Exp $ + * $Id: ident.cc,v 1.50 1999/04/15 06:15:59 wessels Exp $ * * DEBUG: section 30 Ident (RFC 931) * AUTHOR: Duane Wessels @@ -159,7 +159,7 @@ identReadReply(int fd, void *data) debug(30, 5) ("identReadReply: FD %d: Read '%s'\n", fd, buf); if (strstr(buf, "USERID")) { if ((ident = strrchr(buf, ':'))) { - while (isspace(*++ident)); + while (xisspace(*++ident)); identCallback(state, ident); } } diff --git a/src/main.cc b/src/main.cc index a654cdafb5..c21bec927e 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,6 +1,6 @@ /* - * $Id: main.cc,v 1.291 1999/04/14 05:16:17 wessels Exp $ + * $Id: main.cc,v 1.292 1999/04/15 06:16:00 wessels Exp $ * * DEBUG: section 1 Startup and Main Loop * AUTHOR: Harvest Derived @@ -70,6 +70,7 @@ extern void log_trace_done(); extern void log_trace_init(char *); #endif static EVH SquidShutdown; +static void mainSetCwd(void); static void usage(void) @@ -375,6 +376,34 @@ setEffectiveUser(void) } } +static void +mainSetCwd(void) +{ + if (Config.coredump_dir) { + if (!chdir(Config.coredump_dir)) { + debug(0, 1) ("Set Current Directory to %s\n", Config.coredump_dir); + return; + } else { + debug(50, 0) ("chdir: %s: %s\n", Config.coredump_dir, xstrerror()); + } + } + if (!Config.effectiveUser) { + char *p = getcwd(NULL, 0); + debug(0, 1) ("Current Directory is %s\n", p); + xfree(p); + return; + } + /* we were probably started as root, so cd to a swap + * directory in case we dump core */ + if (!chdir(storeSwapDir(0))) { + debug(0, 1) ("Set Current Directory to %s\n", storeSwapDir(0)); + return; + } else { + debug(50, 0) ("%s: %s\n", storeSwapDir(0), xstrerror()); + fatal_dump("Cannot cd to swap directory?"); + } +} + static void mainInitialize(void) { @@ -433,14 +462,7 @@ mainInitialize(void) cachemgrInit(); statInit(); storeInit(); - if (Config.effectiveUser) { - /* we were probably started as root, so cd to a swap - * directory in case we dump core */ - if (chdir(storeSwapDir(0)) < 0) { - debug(50, 0) ("%s: %s\n", storeSwapDir(0), xstrerror()); - fatal_dump("Cannot cd to swap directory?"); - } - } + mainSetCwd(); /* after this point we want to see the mallinfo() output */ do_mallinfo = 1; mimeInit(Config.mimeTablePathname); diff --git a/src/mime.cc b/src/mime.cc index 9d37c76110..bbaddfdf3c 100644 --- a/src/mime.cc +++ b/src/mime.cc @@ -1,6 +1,6 @@ /* - * $Id: mime.cc,v 1.84 1998/12/05 00:54:32 wessels Exp $ + * $Id: mime.cc,v 1.85 1999/04/15 06:16:01 wessels Exp $ * * DEBUG: section 25 MIME Parsing * AUTHOR: Harvest Derived @@ -84,11 +84,11 @@ mime_get_header_field(const char *mime, const char *name, const char *prefix) for (p = mime; *p; p += strcspn(p, "\n\r")) { if (strcmp(p, "\r\n\r\n") == 0 || strcmp(p, "\n\n") == 0) return NULL; - while (isspace(*p)) + while (xisspace(*p)) p++; if (strncasecmp(p, name, namelen)) continue; - if (!isspace(p[namelen]) && p[namelen] != ':') + if (!xisspace(p[namelen]) && p[namelen] != ':') continue; l = strcspn(p, "\n\r") + 1; if (l > GET_HDR_SZ) @@ -99,12 +99,12 @@ mime_get_header_field(const char *mime, const char *name, const char *prefix) q += namelen; if (*q == ':') q++, got = 1; - while (isspace(*q)) + while (xisspace(*q)) q++, got = 1; if (got && prefix) { /* we could process list entries here if we had strcasestr(). */ /* make sure we did not match a part of another field-value */ - got = !strncasecmp(q, prefix, preflen) && !isalpha(q[preflen]); + got = !strncasecmp(q, prefix, preflen) && !xisalpha(q[preflen]); } if (got) { debug(25, 5) ("mime_get_header: returning '%s'\n", q); @@ -393,6 +393,7 @@ mimeLoadIconFile(const char *icon) LOCAL_ARRAY(char, url, MAX_URL); char *buf; const char *type = mimeGetContentType(icon); + HttpReply *reply; if (type == NULL) fatal("Unknown icon format while reading mime.conf\n"); buf = internalLocalUri("/squid-internal-static/icons/", icon); @@ -418,10 +419,13 @@ mimeLoadIconFile(const char *icon) assert(e != NULL); storeSetPublicKey(e); e->mem_obj->request = requestLink(urlParse(METHOD_GET, url)); - httpReplyReset(e->mem_obj->reply); - httpReplySetHeaders(e->mem_obj->reply, 1.0, HTTP_OK, NULL, - type, (int) sb.st_size, sb.st_mtime, squid_curtime + 86400); - httpReplySwapOut(e->mem_obj->reply, e); + httpReplyReset(reply = e->mem_obj->reply); + httpReplySetHeaders(reply, 1.0, HTTP_OK, NULL, + type, (int) sb.st_size, sb.st_mtime, -1); + reply->cache_control = httpHdrCcCreate(); + httpHdrCcSetMaxAge(reply->cache_control, 86400); + httpHeaderPutCc(&reply->header, reply->cache_control); + httpReplySwapOut(reply, e); /* read the file into the buffer and append it to store */ buf = memAllocate(MEM_4K_BUF); while ((n = read(fd, buf, 4096)) > 0) diff --git a/src/neighbors.cc b/src/neighbors.cc index b96cb310b6..e0af86a7b1 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1,6 +1,6 @@ /* - * $Id: neighbors.cc,v 1.270 1999/01/29 23:01:06 wessels Exp $ + * $Id: neighbors.cc,v 1.271 1999/04/15 06:16:03 wessels Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -132,17 +132,17 @@ peerAllowedToUse(const peer * p, request_t * request) if (request->flags.need_validation) return 0; } - if (p->pinglist == NULL && p->access == NULL) + if (p->peer_domain == NULL && p->access == NULL) return do_ping; do_ping = 0; - for (d = p->pinglist; d; d = d->next) { + for (d = p->peer_domain; d; d = d->next) { if (matchDomainName(d->domain, request->host)) { do_ping = d->do_ping; break; } do_ping = !d->do_ping; } - if (p->pinglist && 0 == do_ping) + if (p->peer_domain && 0 == do_ping) return do_ping; if (p->access == NULL) return do_ping; @@ -318,7 +318,7 @@ neighborRemove(peer * target) } if (p) { *P = p->next; - cbdataUnlock(p); + cbdataFree(p); Config.npeers--; } first_ping = Config.peers; @@ -888,15 +888,18 @@ peerDestroy(void *data, int unused) struct _domain_ping *nl = NULL; if (p == NULL) return; - for (l = p->pinglist; l; l = nl) { + for (l = p->peer_domain; l; l = nl) { nl = l->next; safe_free(l->domain); safe_free(l); } safe_free(p->host); #if USE_CACHE_DIGESTS - /* it should be set NULL in free_peer() */ - assert(p->digest == NULL); + if (p->digest) { + PeerDigest *pd = p->digest; + p->digest = NULL; + cbdataUnlock(pd); + } #endif xfree(p); } @@ -1230,9 +1233,9 @@ dump_peers(StoreEntry * sentry, peer * peers) storeAppendPrintf(sentry, "Last failed connect() at: %s\n", mkhttpdlogtime(&(e->last_fail_time))); } - if (e->pinglist != NULL) { + if (e->peer_domain != NULL) { storeAppendPrintf(sentry, "DOMAIN LIST: "); - for (d = e->pinglist; d; d = d->next) { + for (d = e->peer_domain; d; d = d->next) { storeAppendPrintf(sentry, "%s%s ", d->do_ping ? null_string : "!", d->domain); } diff --git a/src/net_db.cc b/src/net_db.cc index 08f5e5b4f7..3707d26d33 100644 --- a/src/net_db.cc +++ b/src/net_db.cc @@ -1,6 +1,6 @@ /* - * $Id: net_db.cc,v 1.136 1999/01/29 21:28:16 wessels Exp $ + * $Id: net_db.cc,v 1.137 1999/04/15 06:16:04 wessels Exp $ * * DEBUG: section 38 Network Measurement Database * AUTHOR: Duane Wessels @@ -668,6 +668,8 @@ netdbHandlePingReply(const struct sockaddr_in *from, int hops, int rtt) N = ++n->pings_recv; if (N > 5) N = 5; + if (rtt < 1.0) + rtt = 1.0; n->hops = ((n->hops * (N - 1)) + hops) / N; n->rtt = ((n->rtt * (N - 1)) + rtt) / N; debug(38, 3) ("netdbHandlePingReply: %s; rtt=%5.1f hops=%4.1f\n", diff --git a/src/pinger.cc b/src/pinger.cc index 5e3aa2d549..f7b291966f 100644 --- a/src/pinger.cc +++ b/src/pinger.cc @@ -1,6 +1,6 @@ /* - * $Id: pinger.cc,v 1.39 1998/11/21 16:54:28 wessels Exp $ + * $Id: pinger.cc,v 1.40 1999/04/15 06:16:05 wessels Exp $ * * DEBUG: section 42 ICMP Pinger program * AUTHOR: Duane Wessels @@ -152,6 +152,14 @@ pingerSendEcho(struct in_addr to, int opcode, char *payload, int len) struct sockaddr_in S; memset(pkt, '\0', MAX_PKT_SZ); icmp = (struct icmphdr *) (void *) pkt; + + /* + * cevans - beware signed/unsigned issues in untrusted data from + * the network!! + */ + if (len < 0) { + len = 0; + } icmp->icmp_type = ICMP_ECHO; icmp->icmp_code = 0; icmp->icmp_cksum = 0; @@ -169,6 +177,9 @@ pingerSendEcho(struct in_addr to, int opcode, char *payload, int len) } icmp->icmp_cksum = in_cksum((u_short *) icmp, icmp_pktsize); S.sin_family = AF_INET; + /* + * cevans: alert: trusting to-host, was supplied in network packet + */ S.sin_addr = to; S.sin_port = 0; assert(icmp_pktsize <= MAX_PKT_SZ); @@ -294,9 +305,12 @@ pingerReadRequest(void) if (n < 0) return n; guess_size = n - (sizeof(pingerEchoData) - PINGER_PAYLOAD_SZ); - if (guess_size != pecho.psize) + if (guess_size != pecho.psize) { fprintf(stderr, "size mismatch, guess=%d psize=%d\n", guess_size, pecho.psize); + errno = 0; + return -1; + } pingerSendEcho(pecho.to, pecho.opcode, pecho.payload, @@ -336,12 +350,19 @@ main(int argc, char *argv[]) char *t; time_t last_check_time = 0; +/* + * cevans - do this first. It grabs a raw socket. After this we can + * drop privs + */ + pingerOpen(); + setgid(getgid()); + setuid(getuid()); + if ((t = getenv("SQUID_DEBUG"))) debug_args = xstrdup(t); getCurrentTime(); _db_init(NULL, debug_args); - pingerOpen(); for (;;) { tv.tv_sec = 10; tv.tv_usec = 0; diff --git a/src/protos.h b/src/protos.h index 09568f2b63..75937a2018 100644 --- a/src/protos.h +++ b/src/protos.h @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.316 1999/04/14 05:16:18 wessels Exp $ + * $Id: protos.h,v 1.317 1999/04/15 06:16:06 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -503,17 +503,18 @@ extern void snmpConnectionClose(void); extern void snmpDebugOid(int lvl, oid * Name, snint Len); extern void addr2oid(struct in_addr addr, oid * Dest); extern struct in_addr *oid2addr(oid * id); -variable_list *snmp_basicFn(variable_list *, snint *); -variable_list *snmp_confFn(variable_list *, snint *); -variable_list *snmp_sysFn(variable_list *, snint *); -variable_list *snmp_prfSysFn(variable_list *, snint *); -variable_list *snmp_prfProtoFn(variable_list *, snint *); -variable_list *snmp_prfPeerFn(variable_list *, snint *); -variable_list *snmp_netIpFn(variable_list *, snint *); -variable_list *snmp_netFqdnFn(variable_list *, snint *); -variable_list *snmp_netDnsFn(variable_list *, snint *); -variable_list *snmp_meshPtblFn(variable_list *, snint *); -variable_list *snmp_meshCtblFn(variable_list *, snint *); +extern struct in_addr *client_entry(struct in_addr *current); +extern variable_list *snmp_basicFn(variable_list *, snint *); +extern variable_list *snmp_confFn(variable_list *, snint *); +extern variable_list *snmp_sysFn(variable_list *, snint *); +extern variable_list *snmp_prfSysFn(variable_list *, snint *); +extern variable_list *snmp_prfProtoFn(variable_list *, snint *); +extern variable_list *snmp_prfPeerFn(variable_list *, snint *); +extern variable_list *snmp_netIpFn(variable_list *, snint *); +extern variable_list *snmp_netFqdnFn(variable_list *, snint *); +extern variable_list *snmp_netDnsFn(variable_list *, snint *); +extern variable_list *snmp_meshPtblFn(variable_list *, snint *); +extern variable_list *snmp_meshCtblFn(variable_list *, snint *); #endif /* SQUID_SNMP */ extern void icpHandleIcpV3(int, struct sockaddr_in, char *, int); @@ -665,6 +666,7 @@ extern void fwdFail(FwdState *, ErrorState *); extern void fwdUnregister(int fd, FwdState *); extern void fwdComplete(FwdState * fwdState); extern void fwdInit(void); +extern int fwdReforwardableStatus(http_status s); extern void urnStart(request_t *, StoreEntry *); @@ -1127,6 +1129,8 @@ extern void delayBytesIn(delay_id, int qty); extern int delayMostBytesWanted(const MemObject * mem, int max); extern delay_id delayMostBytesAllowed(const MemObject * mem); extern void delaySetStoreClient(StoreEntry * e, void *data, delay_id delay_id); +void delayRegisterDelayIdPtr(delay_id * loc); +void delayUnregisterDelayIdPtr(delay_id * loc); #endif /* helper.c */ diff --git a/src/snmp_agent.cc b/src/snmp_agent.cc index ca26c942f2..ee004ded42 100644 --- a/src/snmp_agent.cc +++ b/src/snmp_agent.cc @@ -1,6 +1,6 @@ /* - * $Id: snmp_agent.cc,v 1.65 1999/01/26 06:16:33 glenn Exp $ + * $Id: snmp_agent.cc,v 1.66 1999/04/15 06:16:07 wessels Exp $ * * DEBUG: section 49 SNMP Interface * AUTHOR: Kostas Anagnostakis @@ -177,13 +177,6 @@ snmp_meshPtblFn(variable_list * Var, snint * ErrP) if (p->in_addr.sin_addr.s_addr == laddr->s_addr) break; -#if SNMP_OLD_INDEX - p = Config.peers; - cnt = Var->name[LEN_SQ_MESH + 3]; - debug(49, 5) ("snmp_meshPtblFn: we want .x.%d\n", Var->name[10]); - while (--cnt) - if (!(p = p->next)); -#endif if (p == NULL) { *ErrP = SNMP_ERR_NOSUCHNAME; snmp_var_free(Answer); @@ -478,26 +471,3 @@ snmp_prfProtoFn(variable_list * Var, snint * ErrP) snmp_var_free(Answer); return (NULL); } - -void -addr2oid(struct in_addr addr, oid * Dest) -{ - u_char *cp; - cp = (u_char *) & (addr.s_addr); - Dest[0] = *cp++; - Dest[1] = *cp++; - Dest[2] = *cp++; - Dest[3] = *cp++; -} - -struct in_addr * -oid2addr(oid * id) -{ - static struct in_addr laddr; - u_char *cp = (u_char *) & (laddr.s_addr); - cp[0] = id[0]; - cp[1] = id[1]; - cp[2] = id[2]; - cp[3] = id[3]; - return &laddr; -} diff --git a/src/snmp_core.cc b/src/snmp_core.cc index c6a6bcc2fb..6071e43281 100644 --- a/src/snmp_core.cc +++ b/src/snmp_core.cc @@ -1,5 +1,6 @@ + /* - * $Id: snmp_core.cc,v 1.34 1999/01/30 01:05:09 wessels Exp $ + * $Id: snmp_core.cc,v 1.35 1999/04/15 06:16:08 wessels Exp $ * * DEBUG: section 49 SNMP support * AUTHOR: Glenn Chisholm @@ -37,27 +38,34 @@ #define SNMP_REQUEST_SIZE 4096 #define MAX_PROTOSTAT 5 +typedef struct _mib_tree_entry mib_tree_entry; +typedef oid *(instance_Fn) (oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn); + struct _mib_tree_entry { oid *name; int len; oid_ParseFn *parsefunction; + instance_Fn *instancefunction; int children; struct _mib_tree_entry **leaves; struct _mib_tree_entry *parent; }; -typedef struct _mib_tree_entry mib_tree_entry; - mib_tree_entry *mib_tree_head; +mib_tree_entry *mib_tree_last; #if STDC_HEADERS -static mib_tree_entry *snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, int children,...); +static mib_tree_entry *snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, instance_Fn * instancefunction, int children,...); static oid *snmpCreateOid(int length,...); #else static mib_tree_entry *snmpAddNode(); static oid *snmpCreateOid(); #endif extern void (*snmplib_debug_hook) (int, char *); +static oid *static_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn); +static oid *time_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn); +static oid *peer_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn); +static oid *client_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn); static void snmpDecodePacket(snmp_request_t * rq); static void snmpConstructReponse(snmp_request_t * rq); static struct snmp_pdu *snmpAgentResponse(struct snmp_pdu *PDU); @@ -90,401 +98,231 @@ snmpInit(void) snmplib_debug_hook = snmpSnmplibDebug; mib_tree_head = snmpAddNode(snmpCreateOid(1, 1), - 1, NULL, 1, + 1, NULL, NULL, 1, snmpAddNode(snmpCreateOid(2, 1, 3), - 2, NULL, 1, + 2, NULL, NULL, 1, snmpAddNode(snmpCreateOid(3, 1, 3, 6), - 3, NULL, 1, + 3, NULL, NULL, 1, snmpAddNode(snmpCreateOid(4, 1, 3, 6, 1), - 4, NULL, 1, + 4, NULL, NULL, 1, snmpAddNode(snmpCreateOid(5, 1, 3, 6, 1, 4), - 5, NULL, 1, + 5, NULL, NULL, 1, snmpAddNode(snmpCreateOid(6, 1, 3, 6, 1, 4, 1), - 6, NULL, 1, + 6, NULL, NULL, 1, snmpAddNode(snmpCreateOid(7, 1, 3, 6, 1, 4, 1, 3495), - 7, NULL, 1, + 7, NULL, NULL, 1, snmpAddNode(snmpCreateOid(LEN_SQUIDMIB, SQUIDMIB), - 8, NULL, 5, + 8, NULL, NULL, 5, snmpAddNode(snmpCreateOid(LEN_SQ_SYS, SQ_SYS), - LEN_SQ_SYS, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_SYS + 1, SQ_SYS, 1), - LEN_SQ_SYS + 1, snmp_sysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_SYS + 2, SQ_SYS, 1, 0), - LEN_SQ_SYS + 2, snmp_sysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_SYS + 1, SQ_SYS, 2), - LEN_SQ_SYS + 1, snmp_sysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_SYS + 2, SQ_SYS, 2, 0), - LEN_SQ_SYS + 2, snmp_sysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_SYS + 1, SQ_SYS, 3), - LEN_SQ_SYS + 1, snmp_sysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_SYS + 2, SQ_SYS, 3, 0), - LEN_SQ_SYS + 2, snmp_sysFn, 0))), + LEN_SQ_SYS, NULL, NULL, 3, + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_SYS, SYSVMSIZ), + LEN_SYS, snmp_sysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_SYS, SYSSTOR), + LEN_SYS, snmp_sysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_SYS, SYS_UPTIME), + LEN_SYS, snmp_sysFn, static_Inst, 0)), snmpAddNode(snmpCreateOid(LEN_SQ_CONF, SQ_CONF), - LEN_SQ_CONF, NULL, 5, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 1, SQ_CONF, 1), - LEN_SQ_CONF + 1, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 1, 0), - LEN_SQ_CONF + 2, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 1, SQ_CONF, 2), - LEN_SQ_CONF + 1, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 2, 0), - LEN_SQ_CONF + 2, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 1, SQ_CONF, 3), - LEN_SQ_CONF + 1, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 3, 0), - LEN_SQ_CONF + 2, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 1, SQ_CONF, 4), - LEN_SQ_CONF + 1, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 4, 0), - LEN_SQ_CONF + 2, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 1, SQ_CONF, 5), - LEN_SQ_CONF + 1, NULL, 4, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 5, 1), - LEN_SQ_CONF + 2, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 3, SQ_CONF, 5, 1, 0), - LEN_SQ_CONF + 3, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 5, 2), - LEN_SQ_CONF + 2, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 3, SQ_CONF, 5, 2, 0), - LEN_SQ_CONF + 3, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 5, 3), - LEN_SQ_CONF + 2, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 3, SQ_CONF, 5, 3, 0), - LEN_SQ_CONF + 3, snmp_confFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 2, SQ_CONF, 5, 4), - LEN_SQ_CONF + 2, snmp_confFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_CONF + 3, SQ_CONF, 5, 4, 0), - LEN_SQ_CONF + 3, snmp_confFn, 0)))), + LEN_SQ_CONF, NULL, NULL, 5, + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_ADMIN), + LEN_SYS, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_VERSION), + LEN_SYS, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_VERSION_ID), + LEN_SYS, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_LOG_FAC), + LEN_SYS, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SYS, SQ_CONF, CONF_STORAGE), + LEN_SYS, NULL, NULL, 4, + snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_MMAXSZ), + LEN_CONF_ST, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_SWMAXSZ), + LEN_CONF_ST, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_SWHIWM), + LEN_CONF_ST, snmp_confFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_CONF_ST, SQ_CONF, CONF_STORAGE, CONF_ST_SWLOWM), + LEN_CONF_ST, snmp_confFn, static_Inst, 0))), snmpAddNode(snmpCreateOid(LEN_SQ_PRF, SQ_PRF), - LEN_SQ_PRF, NULL, 2, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 1, SQ_PRF, 1), - LEN_SQ_PRF + 1, NULL, 11, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 1), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 1, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 2), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 2, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 3), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 3, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 4), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 4, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 5), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 5, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 6), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 6, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 7), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 7, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 8), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 8, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 9), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 9, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 10), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 10, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 1, 11), - LEN_SQ_PRF + 2, snmp_prfSysFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 1, 11, 0), - LEN_SQ_PRF + 3, snmp_prfSysFn, 0))), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 1, SQ_PRF, 2), - LEN_SQ_PRF + 1, NULL, 2, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 2, 1), - LEN_SQ_PRF + 2, NULL, 15, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 1), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 1, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 2), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 2, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 3), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 3, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 4), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 4, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 5), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 5, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 6), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 6, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 7), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 7, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 8), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 8, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 9), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 9, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 10), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 10, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 11), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 11, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 12), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 12, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 13), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 13, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 14), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 14, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 1, 15), - LEN_SQ_PRF + 3, snmp_prfProtoFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 1, 15, 0), - LEN_SQ_PRF + 4, snmp_prfProtoFn, 0))), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, 2, 2), - LEN_SQ_PRF + 2, NULL, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, 2, 2, 1), - LEN_SQ_PRF + 3, NULL, 10, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 1), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 1, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 1, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 1, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 2), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 2, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 2, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 2, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 3), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 3, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 3, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 3, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 4), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 4, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 4, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 4, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 5), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 5, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 5, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 5, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 6), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 6, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 6, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 6, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 7), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 7, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 7, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 7, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 8), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 8, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 8, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 8, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 9), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 9, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 9, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 9, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, 2, 2, 1, 10), - LEN_SQ_PRF + 4, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 10, 1), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 10, 5), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 5, SQ_PRF, 2, 2, 1, 10, 60), - LEN_SQ_PRF + 5, snmp_prfProtoFn, 0)))))), + LEN_SQ_PRF, NULL, NULL, 2, + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 1, SQ_PRF, PERF_SYS), + LEN_SQ_PRF + 1, NULL, NULL, 11, + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 1), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 2), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 3), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 4), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 5), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 6), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 7), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 8), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 9), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 10), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_SYS, 11), + LEN_SQ_PRF + 2, snmp_prfSysFn, static_Inst, 0)), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 1, SQ_PRF, PERF_PROTO), + LEN_SQ_PRF + 1, NULL, NULL, 2, + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_PROTO, 1), + LEN_SQ_PRF + 2, NULL, NULL, 15, + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 1), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 2), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 3), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 4), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 5), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 6), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 7), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 8), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 9), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 10), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 11), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 12), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 13), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 14), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 1, 15), + LEN_SQ_PRF + 3, snmp_prfProtoFn, static_Inst, 0))), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 2, SQ_PRF, PERF_PROTO, 2), + LEN_SQ_PRF + 2, NULL, NULL, 1, + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 3, SQ_PRF, PERF_PROTO, 2, 1), + LEN_SQ_PRF + 3, NULL, NULL, 10, + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 1), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 2), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 3), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 4), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 5), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 6), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 7), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 8), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 9), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_PRF + 4, SQ_PRF, PERF_PROTO, 2, 1, 10), + LEN_SQ_PRF + 4, snmp_prfProtoFn, time_Inst, 0)))), snmpAddNode(snmpCreateOid(LEN_SQ_NET, SQ_NET), - LEN_SQ_NET, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, 1), - LEN_SQ_NET + 1, NULL, 8, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 1), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 1, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 2), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 2, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 3), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 3, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 4), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 4, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 5), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 5, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 6), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 6, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 7), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 7, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 1, 8), - LEN_SQ_NET + 2, snmp_netIpFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 1, 8, 0), - LEN_SQ_NET + 3, snmp_netIpFn, 0))), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, 2), - LEN_SQ_NET + 1, NULL, 7, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 1), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 1, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 2), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 2, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 3), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 3, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 4), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 4, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 5), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 5, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 6), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 6, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 2, 7), - LEN_SQ_NET + 2, snmp_netFqdnFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 2, 7, 0), - LEN_SQ_NET + 3, snmp_netFqdnFn, 0))), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, 3), - LEN_SQ_NET + 1, NULL, 3, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 3, 1), - LEN_SQ_NET + 2, snmp_netDnsFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 3, 1, 0), - LEN_SQ_NET + 3, snmp_netDnsFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 3, 2), - LEN_SQ_NET + 2, snmp_netDnsFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 3, 2, 0), - LEN_SQ_NET + 3, snmp_netDnsFn, 0)), - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, 3, 3), - LEN_SQ_NET + 2, snmp_netDnsFn, 1, - snmpAddNode(snmpCreateOid(LEN_SQ_NET + 3, SQ_NET, 3, 3, 0), - LEN_SQ_NET + 3, snmp_netDnsFn, 0)))), + LEN_SQ_NET, NULL, NULL, 3, + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, NET_IP_CACHE), + LEN_SQ_NET + 1, NULL, NULL, 8, + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_ENT), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_REQ), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_HITS), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_PENDHIT), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_NEGHIT), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_MISS), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_GHBN), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_IP_CACHE, IP_LOC), + LEN_SQ_NET + 2, snmp_netIpFn, static_Inst, 0)), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, NET_FQDN_CACHE), + LEN_SQ_NET + 1, NULL, NULL, 7, + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_ENT), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_REQ), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_HITS), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_PENDHIT), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_NEGHIT), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_MISS), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_FQDN_CACHE, FQDN_GHBN), + LEN_SQ_NET + 2, snmp_netFqdnFn, static_Inst, 0)), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 1, SQ_NET, NET_DNS_CACHE), + LEN_SQ_NET + 1, NULL, NULL, 3, + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_REQ), + LEN_SQ_NET + 2, snmp_netDnsFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_REP), + LEN_SQ_NET + 2, snmp_netDnsFn, static_Inst, 0), + snmpAddNode(snmpCreateOid(LEN_SQ_NET + 2, SQ_NET, NET_DNS_CACHE, DNS_SERVERS), + LEN_SQ_NET + 2, snmp_netDnsFn, static_Inst, 0))), snmpAddNode(snmpCreateOid(LEN_SQ_MESH, SQ_MESH), - LEN_SQ_MESH, NULL, 2, + LEN_SQ_MESH, NULL, NULL, 2, snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 1, SQ_MESH, 1), - LEN_SQ_MESH + 1, NULL, 1, + LEN_SQ_MESH + 1, NULL, NULL, 1, snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 2, SQ_MESH, 1, 1), - LEN_SQ_MESH + 2, NULL, 13, + LEN_SQ_MESH + 2, NULL, NULL, 13, snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 1), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 2), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 3), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 4), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 5), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 6), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 7), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 8), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 9), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 10), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 11), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 12), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 13), - LEN_SQ_MESH + 3, snmp_meshPtblFn, 0))), + LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0))), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 1, SQ_MESH, 2), - LEN_SQ_MESH + 1, NULL, 1, + LEN_SQ_MESH + 1, NULL, NULL, 1, snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 2, SQ_MESH, 2, 1), - LEN_SQ_MESH + 2, NULL, 9, + LEN_SQ_MESH + 2, NULL, NULL, 9, snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 1), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 2), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 3), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 4), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 5), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 6), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 7), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 8), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0), - snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 9), - LEN_SQ_MESH + 3, snmp_meshCtblFn, 0)))) + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0), + (mib_tree_last = snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 2, 1, 9), + LEN_SQ_MESH + 3, snmp_meshCtblFn, client_Inst, 0))))) ) ) ) @@ -671,7 +509,7 @@ snmpDecodePacket(snmp_request_t * rq) debug(49, 5) ("snmpAgentParse: reqid=[%d]\n", PDU->reqid); snmpConstructReponse(rq); } else { - debug(49, 0) ("Failed SNMP agent query from : %s.\n", + debug(49, 1) ("Failed SNMP agent query from : %s.\n", inet_ntoa(rq->from.sin_addr)); snmp_free_pdu(PDU); } @@ -797,7 +635,7 @@ oid_ParseFn * snmpTreeGet(oid * Current, snint CurrentLen) { oid_ParseFn *Fn = NULL; - mib_tree_entry *mibTreeEntry = NULL; + mib_tree_entry *mibTreeEntry = NULL, *lastEntry = NULL; int count = 0; debug(49, 5) ("snmpTreeGet: Called\n"); @@ -808,14 +646,14 @@ snmpTreeGet(oid * Current, snint CurrentLen) mibTreeEntry = mib_tree_head; if (Current[count] == mibTreeEntry->name[count]) { count++; - while ((mibTreeEntry) && (count < CurrentLen)) { + while ((mibTreeEntry) && (count < CurrentLen) && (!mibTreeEntry->parsefunction)) { + lastEntry = mibTreeEntry; mibTreeEntry = snmpTreeEntry(Current[count], count, mibTreeEntry); count++; } } - if (mibTreeEntry) { + if (mibTreeEntry) Fn = mibTreeEntry->parsefunction; - } debug(49, 5) ("snmpTreeGet: return\n"); return (Fn); } @@ -835,49 +673,206 @@ snmpTreeNext(oid * Current, snint CurrentLen, oid ** Next, snint * NextLen) mibTreeEntry = mib_tree_head; if (Current[count] == mibTreeEntry->name[count]) { count++; - while ((mibTreeEntry) && (count < CurrentLen)) { + while ((mibTreeEntry) && (count < CurrentLen) && (!mibTreeEntry->parsefunction)) { mibTreeEntry = snmpTreeEntry(Current[count], count, mibTreeEntry); count++; } debug(49, 5) ("snmpTreeNext: Recursed down to requested object\n"); - - if ((mibTreeEntry) && (mibTreeEntry->parsefunction)) { - count--; - nextoid = snmpTreeSiblingEntry(Current[count], count, mibTreeEntry->parent); - if (nextoid) { - mibTreeEntry = nextoid; - count++; - } else { - debug(49, 5) ("snmpTreeNext: Attempting to recurse up for next object\n"); - while (!nextoid) { - count--; + } else { + return NULL; + } + if (mibTreeEntry == mib_tree_last) + return (Fn); + if ((mibTreeEntry) && (mibTreeEntry->parsefunction)) { + *NextLen = CurrentLen; + *Next = (*mibTreeEntry->instancefunction) (Current, NextLen, mibTreeEntry, &Fn); + if (*Next) + return (Fn); + } + if ((mibTreeEntry) && (mibTreeEntry->parsefunction)) { + count--; + nextoid = snmpTreeSiblingEntry(Current[count], count, mibTreeEntry->parent); + if (nextoid) { + debug(49, 5) ("snmpTreeNext: Next OID found for sibling\n"); + mibTreeEntry = nextoid; + count++; + } else { + debug(49, 5) ("snmpTreeNext: Attempting to recurse up for next object\n"); + while (!nextoid) { + count--; + if (mibTreeEntry->parent->parent) { nextoid = mibTreeEntry->parent; mibTreeEntry = snmpTreeEntry(Current[count] + 1, count, nextoid->parent); if (!mibTreeEntry) { mibTreeEntry = nextoid; nextoid = NULL; } + } else { + nextoid = mibTreeEntry; + mibTreeEntry = NULL; } } } - debug(49, 5) ("snmpTreeNext: Past Second\n"); - - while ((mibTreeEntry) && (!mibTreeEntry->parsefunction)) { - mibTreeEntry = mibTreeEntry->leaves[0]; - } - - if ((mibTreeEntry) && (mibTreeEntry->children == 1)) - mibTreeEntry = mibTreeEntry->leaves[0]; + } + while ((mibTreeEntry) && (!mibTreeEntry->parsefunction)) { + mibTreeEntry = mibTreeEntry->leaves[0]; } if (mibTreeEntry) { - *Next = snmpOidDup(mibTreeEntry->name, mibTreeEntry->len); *NextLen = mibTreeEntry->len; - Fn = mibTreeEntry->parsefunction; + *Next = (*mibTreeEntry->instancefunction) (mibTreeEntry->name, NextLen, mibTreeEntry, &Fn); } - debug(49, 5) ("snmpTreeNext: return\n"); return (Fn); } +oid * +static_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn) +{ + oid *instance = NULL; + + if (*len <= current->len) { + instance = xmalloc(sizeof(name) * (*len + 1)); + xmemcpy(instance, name, (sizeof(name) * *len)); + instance[*len] = 0; + *len += 1; + } + *Fn = current->parsefunction; + return (instance); +} + +oid * +time_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn) +{ + oid *instance = NULL; + int identifier = 0, loop = 0; + int index[TIME_INDEX_LEN] = + {TIME_INDEX}; + + if (*len <= current->len) { + instance = xmalloc(sizeof(name) * (*len + 1)); + xmemcpy(instance, name, (sizeof(name) * *len)); + instance[*len] = *index; + *len += 1; + } else { + identifier = name[*len - 1]; + while ((identifier != index[loop]) && (loop < TIME_INDEX_LEN)) + loop++; + if (loop < TIME_INDEX_LEN - 1) { + instance = xmalloc(sizeof(name) * (*len)); + xmemcpy(instance, name, (sizeof(name) * *len)); + instance[*len - 1] = index[++loop]; + } + } + *Fn = current->parsefunction; + return (instance); +} + +oid * +peer_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn) +{ + oid *instance = NULL; + u_char *cp = NULL; + peer *peers = Config.peers; + struct in_addr *laddr = NULL; + char *host_addr = NULL, *current_addr = NULL, *last_addr = NULL; + + if (peers == NULL) { + current = current->parent->parent->parent->leaves[1]; + while ((current) && (!current->parsefunction)) + current = current->leaves[0]; + instance = client_Inst(current->name, len, current, Fn); + } else if (*len <= current->len) { + instance = xmalloc(sizeof(name) * (*len + 4)); + xmemcpy(instance, name, (sizeof(name) * *len)); + cp = (u_char *) & (peers->in_addr.sin_addr.s_addr); + instance[*len] = *cp++; + instance[*len + 1] = *cp++; + instance[*len + 2] = *cp++; + instance[*len + 3] = *cp++; + *len += 4; + } else { + laddr = oid2addr(&name[*len - 4]); + host_addr = inet_ntoa(*laddr); + last_addr = xmalloc(strlen(host_addr)); + strncpy(last_addr, host_addr, strlen(host_addr)); + current_addr = inet_ntoa(peers->in_addr.sin_addr); + while ((peers) && (strncmp(last_addr, current_addr, strlen(current_addr)))) { + if (peers->next) { + peers = peers->next; + current_addr = inet_ntoa(peers->in_addr.sin_addr); + } else { + peers = NULL; + } + } + xfree(last_addr); + if (peers) { + if (peers->next) { + peers = peers->next; + instance = xmalloc(sizeof(name) * (*len)); + xmemcpy(instance, name, (sizeof(name) * *len)); + cp = (u_char *) & (peers->in_addr.sin_addr.s_addr); + instance[*len - 4] = *cp++; + instance[*len - 3] = *cp++; + instance[*len - 2] = *cp++; + instance[*len - 1] = *cp++; + } else { + return (instance); + } + } else { + return (instance); + } + } + *Fn = current->parsefunction; + return (instance); +} + +oid * +client_Inst(oid * name, snint * len, mib_tree_entry * current, oid_ParseFn ** Fn) +{ + oid *instance = NULL; + u_char *cp = NULL; + struct in_addr *laddr = NULL; + + if (*len <= current->len) { + instance = xmalloc(sizeof(name) * (*len + 4)); + xmemcpy(instance, name, (sizeof(name) * *len)); + laddr = client_entry(NULL); + if (laddr) { + cp = (u_char *) & (laddr->s_addr); + instance[*len] = *cp++; + instance[*len + 1] = *cp++; + instance[*len + 2] = *cp++; + instance[*len + 3] = *cp++; + *len += 4; + } + } else { + laddr = oid2addr(&name[*len - 4]); + laddr = client_entry(laddr); + if (laddr) { + instance = xmalloc(sizeof(name) * (*len)); + xmemcpy(instance, name, (sizeof(name) * *len)); + cp = (u_char *) & (laddr->s_addr); + instance[*len - 4] = *cp++; + instance[*len - 3] = *cp++; + instance[*len - 2] = *cp++; + instance[*len - 1] = *cp++; + } + } + *Fn = current->parsefunction; + return (instance); +} + + +/* + * Utility functions + */ + +/* + * Tree utility functions. + */ + +/* + * Returns a the sibling object in the tree + */ mib_tree_entry * snmpTreeSiblingEntry(oid entry, snint len, mib_tree_entry * current) { @@ -898,6 +893,9 @@ snmpTreeSiblingEntry(oid entry, snint len, mib_tree_entry * current) return (next); } +/* + * Returns the requested child object or NULL if it does not exist + */ mib_tree_entry * snmpTreeEntry(oid entry, snint len, mib_tree_entry * current) { @@ -913,20 +911,12 @@ snmpTreeEntry(oid entry, snint len, mib_tree_entry * current) return (next); } -/* - * Utility functions - */ - -/* - * Tree utility functions. - */ - /* * Adds a node to the MIB tree structure and adds the appropriate children */ mib_tree_entry * #if STDC_HEADERS -snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, int children,...) +snmpAddNode(oid * name, int len, oid_ParseFn * parsefunction, instance_Fn * instancefunction, int children,...) #else snmpAddNode(va_alist) va_dcl @@ -936,31 +926,34 @@ snmpAddNode(va_alist) va_list args; int loop; mib_tree_entry *entry = NULL; - va_start(args, children); + va_start(args, children); #else va_list args; oid *name = NULL; int len = 0, children = 0, loop; oid_ParseFn *parsefunction = NULL; + instance_Fn *instancefunction = NULL; mib_tree_entry *entry = NULL; - va_start(args); - name = va_arg(args, oid *); - len = va_arg(args, int); - parsefunction = va_arg(args, oid_ParseFn *); - children = va_arg(args, int); + va_start(args); + name = va_arg(args, oid *); + len = va_arg(args, int); + parsefunction = va_arg(args, oid_ParseFn *); + instancefunction = va_arg(args, instance_Fn *); + children = va_arg(args, int); #endif - debug(49, 6) ("snmpAddNode: Children : %d, Oid : \n", children); - snmpDebugOid(6, name, len); + debug(49, 6) ("snmpAddNode: Children : %d, Oid : \n", children); + snmpDebugOid(6, name, len); - va_start(args, children); - entry = xmalloc(sizeof(mib_tree_entry)); - entry->name = snmpOidDup(name, len); - entry->len = len; - entry->parsefunction = parsefunction; - entry->children = children; + va_start(args, children); + entry = xmalloc(sizeof(mib_tree_entry)); + entry->name = snmpOidDup(name, len); + entry->len = len; + entry->parsefunction = parsefunction; + entry->instancefunction = instancefunction; + entry->children = children; - if (children > 0) { + if (children > 0) { entry->leaves = xmalloc(sizeof(mib_tree_entry *) * children); for (loop = 0; loop < children; loop++) { entry->leaves[loop] = va_arg(args, mib_tree_entry *); @@ -1039,3 +1032,27 @@ snmpSnmplibDebug(int lvl, char *buf) { debug(49, lvl) ("%s", buf); } + +void +addr2oid(struct in_addr addr, oid * Dest) +{ + u_char *cp; + cp = (u_char *) & (addr.s_addr); + Dest[0] = *cp++; + Dest[1] = *cp++; + Dest[2] = *cp++; + Dest[3] = *cp++; +} + +struct in_addr + * +oid2addr(oid * id) +{ + static struct in_addr laddr; + u_char *cp = (u_char *) & (laddr.s_addr); + cp[0] = id[0]; + cp[1] = id[1]; + cp[2] = id[2]; + cp[3] = id[3]; + return &laddr; +} diff --git a/src/squid.h b/src/squid.h index bfbfcdb42d..51312694fb 100644 --- a/src/squid.h +++ b/src/squid.h @@ -1,6 +1,6 @@ /* - * $Id: squid.h,v 1.186 1999/04/14 05:16:19 wessels Exp $ + * $Id: squid.h,v 1.187 1999/04/15 06:16:09 wessels Exp $ * * AUTHOR: Duane Wessels * @@ -370,11 +370,21 @@ struct rusage { /* * Squid source files should not call these functions directly */ +#ifndef malloc #define malloc + +#endif +#ifndef free #define free + +#endif +#ifndef calloc #define calloc + +#endif +#ifndef sprintf #define sprintf + +#endif +#ifndef strdup #define strdup + +#endif #if SQUID_SNMP extern struct snmp_mib_tree *Mib; diff --git a/src/ssl.cc b/src/ssl.cc index 3830a95ab5..a81127b429 100644 --- a/src/ssl.cc +++ b/src/ssl.cc @@ -1,6 +1,6 @@ /* - * $Id: ssl.cc,v 1.92 1999/01/29 23:39:23 wessels Exp $ + * $Id: ssl.cc,v 1.93 1999/04/15 06:16:09 wessels Exp $ * * DEBUG: section 26 Secure Sockets Layer Proxy * AUTHOR: Duane Wessels @@ -107,6 +107,9 @@ sslStateFree(SslStateData * sslState) sslState->host = NULL; requestUnlink(sslState->request); sslState->request = NULL; +#if DELAY_POOLS + delayUnregisterDelayIdPtr(&sslState->delay_id); +#endif cbdataFree(sslState); } @@ -429,6 +432,7 @@ sslStart(int fd, const char *url, request_t * request, size_t * size_ptr) cbdataAdd(sslState, cbdataXfree, 0); #if DELAY_POOLS sslState->delay_id = delayClient(request); + delayRegisterDelayIdPtr(&sslState->delay_id); #endif sslState->url = xstrdup(url); sslState->request = requestLink(request); diff --git a/src/stat.cc b/src/stat.cc index 9889424427..ddbff7e0a0 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,6 +1,6 @@ /* - * $Id: stat.cc,v 1.311 1999/01/21 21:10:34 wessels Exp $ + * $Id: stat.cc,v 1.312 1999/04/15 06:16:10 wessels Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -407,7 +407,7 @@ statFiledescriptors(StoreEntry * sentry) int i; fde *f; storeAppendPrintf(sentry, "Active file descriptors:\n"); - storeAppendPrintf(sentry, "%-4s %-6s %-4s %-7s %-7s %-21s %s\n", + storeAppendPrintf(sentry, "%-4s %-6s %-4s %-7s* %-7s* %-21s %s\n", "File", "Type", "Tout", @@ -415,17 +415,19 @@ statFiledescriptors(StoreEntry * sentry) "Nwrite", "Remote Address", "Description"); - storeAppendPrintf(sentry, "---- ------ ---- ------- ------- --------------------- ------------------------------\n"); + storeAppendPrintf(sentry, "---- ------ ---- -------- -------- --------------------- ------------------------------\n"); for (i = 0; i < Squid_MaxFD; i++) { f = &fd_table[i]; if (!f->flags.open) continue; - storeAppendPrintf(sentry, "%4d %-6.6s %4d %7d %7d %-21s %s\n", + storeAppendPrintf(sentry, "%4d %-6.6s %4d %7d%c %7d%c %-21s %s\n", i, fdTypeStr[f->type], f->timeout_handler ? (int) (f->timeout - squid_curtime) / 60 : 0, f->bytes_read, + f->read_handler ? '*' : ' ', f->bytes_written, + f->write_handler ? '*' : ' ', fdRemoteAddr(f), f->desc); } @@ -587,6 +589,8 @@ info_get(StoreEntry * sentry) Biggest_FD); storeAppendPrintf(sentry, "\tNumber of file desc currently in use: %4d\n", Number_FD); + storeAppendPrintf(sentry, "\tFiles queued for open: %4d\n", + Opening_FD); storeAppendPrintf(sentry, "\tAvailable number of file descriptors: %4d\n", fdNFree()); storeAppendPrintf(sentry, "\tReserved number of file descriptors: %4d\n", @@ -874,7 +878,7 @@ statAvgTick(void *notused) StatCounters *p = &CountHist[1]; StatCounters *c = &Counter; struct rusage rusage; - eventAdd("statAvgTick", statAvgTick, NULL, COUNT_INTERVAL, 1); + eventAdd("statAvgTick", statAvgTick, NULL, (double) COUNT_INTERVAL, 1); squid_getrusage(&rusage); c->page_faults = rusage_pagefaults(&rusage); c->cputime = rusage_cputime(&rusage); diff --git a/src/store_client.cc b/src/store_client.cc index d5a2c4e35c..e62eddbfdf 100644 --- a/src/store_client.cc +++ b/src/store_client.cc @@ -1,6 +1,6 @@ /* - * $Id: store_client.cc,v 1.61 1999/04/14 06:36:09 wessels Exp $ + * $Id: store_client.cc,v 1.62 1999/04/15 06:16:11 wessels Exp $ * * DEBUG: section 20 Storage Manager Client-Side Interface * AUTHOR: Duane Wessels @@ -132,6 +132,9 @@ storeClientListAdd(StoreEntry * e, void *data) assert(e->swap_file_number > -1 || storeSwapOutAble(e)); for (T = &mem->clients; *T; T = &(*T)->next); *T = sc; +#if DELAY_POOLS + delayRegisterDelayIdPtr(&sc->delay_id); +#endif } static void @@ -466,6 +469,9 @@ storeUnregister(StoreEntry * e, void *data) sc->callback = NULL; callback(sc->callback_data, sc->copy_buf, -1); } +#if DELAY_POOLS + delayUnregisterDelayIdPtr(&sc->delay_id); +#endif cbdataFree(sc); assert(e->lock_count > 0); if (mem->nclients == 0) @@ -541,7 +547,7 @@ CheckQuickAbort2(StoreEntry * entry) debug(20, 3) ("CheckQuickAbort2: YES KEY_PRIVATE\n"); return 1; } - expectlen = mem->reply->content_length; + expectlen = mem->reply->content_length + mem->reply->hdr_sz; curlen = (int) mem->inmem_hi; minlen = (int) Config.quickAbort.min << 10; if (minlen < 0) { diff --git a/src/store_dir.cc b/src/store_dir.cc index dff6b8f71b..3bd9261265 100644 --- a/src/store_dir.cc +++ b/src/store_dir.cc @@ -1,6 +1,6 @@ /* - * $Id: store_dir.cc,v 1.84 1999/01/13 23:24:15 wessels Exp $ + * $Id: store_dir.cc,v 1.85 1999/04/15 06:16:12 wessels Exp $ * * DEBUG: section 47 Store Directory Routines * AUTHOR: Duane Wessels @@ -283,7 +283,7 @@ storeDirSelectSwapDir(void) diru[i] = 1.1; SD = &Config.cacheSwap.swapDirs[i]; SD->flags.selected = 0; - if (SD->read_only) + if (SD->flags.read_only) continue; u = (double) SD->cur_size / SD->max_size; if (u > high) @@ -627,6 +627,8 @@ storeDirStats(StoreEntry * sentry) storeAppendPrintf(sentry, "Flags:"); if (SD->flags.selected) storeAppendPrintf(sentry, " SELECTED"); + if (SD->flags.read_only) + storeAppendPrintf(sentry, " READ-ONLY"); storeAppendPrintf(sentry, "\n"); } } diff --git a/src/structs.h b/src/structs.h index 807ab55e95..243a82e179 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.279 1999/04/15 06:03:50 wessels Exp $ + * $Id: structs.h,v 1.280 1999/04/15 06:16:13 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -439,6 +439,7 @@ struct _SquidConfig { } mcast_miss; #endif HttpHeaderMask anonymize_headers; + char *coredump_dir; }; struct _SquidConfig2 { @@ -1010,7 +1011,7 @@ struct _peer { } htcp; #endif u_short http_port; - domain_ping *pinglist; + domain_ping *peer_domain; domain_type *typelist; acl_access *access; struct { @@ -1254,12 +1255,12 @@ struct _SwapDir { int l2; int cur_size; int max_size; - int read_only; int suggest; fileMap *map; int swaplog_fd; struct { unsigned int selected:1; + unsigned int read_only:1; } flags; }; diff --git a/src/tunnel.cc b/src/tunnel.cc index 6e9938315a..de5b421c75 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -1,6 +1,6 @@ /* - * $Id: tunnel.cc,v 1.92 1999/01/29 23:39:23 wessels Exp $ + * $Id: tunnel.cc,v 1.93 1999/04/15 06:16:09 wessels Exp $ * * DEBUG: section 26 Secure Sockets Layer Proxy * AUTHOR: Duane Wessels @@ -107,6 +107,9 @@ sslStateFree(SslStateData * sslState) sslState->host = NULL; requestUnlink(sslState->request); sslState->request = NULL; +#if DELAY_POOLS + delayUnregisterDelayIdPtr(&sslState->delay_id); +#endif cbdataFree(sslState); } @@ -429,6 +432,7 @@ sslStart(int fd, const char *url, request_t * request, size_t * size_ptr) cbdataAdd(sslState, cbdataXfree, 0); #if DELAY_POOLS sslState->delay_id = delayClient(request); + delayRegisterDelayIdPtr(&sslState->delay_id); #endif sslState->url = xstrdup(url); sslState->request = requestLink(request); diff --git a/src/url.cc b/src/url.cc index 387ed62f7e..98ba8f0fe4 100644 --- a/src/url.cc +++ b/src/url.cc @@ -1,6 +1,6 @@ /* - * $Id: url.cc,v 1.113 1999/01/19 02:24:35 wessels Exp $ + * $Id: url.cc,v 1.114 1999/04/15 06:16:13 wessels Exp $ * * DEBUG: section 23 URL Parsing * AUTHOR: Duane Wessels @@ -233,7 +233,7 @@ urlParse(method_t method, char *url) } } for (t = host; *t; t++) - *t = tolower(*t); + *t = xtolower(*t); if (strspn(host, valid_hostname_chars) != strlen(host)) { debug(23, 1) ("urlParse: Illegal character in hostname '%s'\n", host); return NULL; diff --git a/src/urn.cc b/src/urn.cc index a059434e5b..558cf2134d 100644 --- a/src/urn.cc +++ b/src/urn.cc @@ -1,7 +1,7 @@ /* * - * $Id: urn.cc,v 1.52 1999/01/29 23:39:25 wessels Exp $ + * $Id: urn.cc,v 1.53 1999/04/15 06:16:14 wessels Exp $ * * DEBUG: section 52 URN Parsing * AUTHOR: Kostas Anagnostakis @@ -143,9 +143,6 @@ urnStart(request_t * r, StoreEntry * e) storeLockObject(urlres_e); storeClientListAdd(urlres_e, urnState); } -#if DELAY_POOLS - delaySetStoreClient(urlres_e, urnState, 0); -#endif urnState->urlres_e = urlres_e; urnState->urlres_r = requestLink(urlres_r); storeClientCopy(urlres_e, @@ -231,7 +228,7 @@ urnHandleReply(void *data, char *buf, ssize_t size) errorAppendEntry(e, err); return; } - while (isspace(*s)) + while (xisspace(*s)) s++; urls = urnParseReply(s, urnState->request->method); for (i = 0; NULL != urls[i].url; i++) diff --git a/test-suite/tcp-banger2.c b/test-suite/tcp-banger2.c index 16fe507ee1..bfc1cd0cdb 100644 --- a/test-suite/tcp-banger2.c +++ b/test-suite/tcp-banger2.c @@ -1,5 +1,7 @@ #include "config.h" +/* $Id: tcp-banger2.c,v 1.23 1999/04/15 06:16:15 wessels Exp $ */ + /* * On some systems, FD_SETSIZE is set to something lower than the * actual number of files which can be opened. IRIX is one case, @@ -82,6 +84,9 @@ #if HAVE_ASSERT_H #include #endif +#if HAVE_CTYPE_H +#include +#endif #define PROXY_PORT 3128 #define PROXY_ADDR "127.0.0.1" @@ -102,7 +107,6 @@ static struct timeval now; static long total_bytes_written = 0; static long total_bytes_read = 0; static int opt_checksum = 0; -static int accepted_status = 200; FILE *trace_file = NULL; typedef void (CB) (int, void *); @@ -124,7 +128,6 @@ struct _request { int bodysize; int content_length; int status; - int validstatus; long validsum; long sum; }; @@ -220,11 +223,11 @@ read_reply(int fd, void *data) if (!header) break; /* Decode header */ - if (strncasecmp(header, "HTTP/1", 6) == 0) - r->status = atoi(header + 9); - if (strncasecmp(header, "Content-Length:", 15) == 0) + if (strncmp(header, "HTTP", 4) == 0) + r->status = atoi(header + 8); + else if (strncasecmp(header, "Content-Length:", 15) == 0) r->content_length = atoi(header + 15); - if (strncasecmp(header, "X-Request-URI:", 14) == 0) { + else if (strncasecmp(header, "X-Request-URI:", 14) == 0) { /* Check URI */ if (strncmp(r->url, header + 15, strcspn(header + 15, "\r\n"))) { char url[8192]; @@ -275,11 +278,13 @@ reply_done(int fd, void *data) fprintf(stderr, "WARNING: %s invalid checksum wanted 0x%lx got 0x%lx\n", r->url, r->validsum, r->sum); } - if (r->status != r->validstatus && r->validstatus) - fprintf(stderr, "WARNING: %s status %d\n", r->url, r->status); if (trace_file) { - fprintf(trace_file, "%s %s %s %d 0x%lx %d\n", - r->method, r->url, r->requestbodyfile, r->bodysize, r->sum, r->status); + if (opt_checksum) + fprintf(trace_file, "%s %s %d %s %d 0x%lx\n", + r->method, r->url, r->status, r->requestbodyfile, r->bodysize, r->sum); + else + fprintf(trace_file, "%s %s %d %s %d\n", + r->method, r->url, r->status, r->requestbodyfile, r->bodysize); } free_request(r); } @@ -290,7 +295,7 @@ request(char *urlin) int s = -1, f = -1; char buf[4096]; char msg[8192]; - char *method, *url, *file, *size, *checksum, *status; + char *method, *url, *file, *size, *checksum; char *host; char urlbuf[8192]; int len, len2; @@ -319,7 +324,6 @@ request(char *urlin) file = strtok(NULL, " "); size = strtok(NULL, " "); checksum = strtok(NULL, " "); - status = strtok(NULL, " "); if (!url) { url = method; method = "GET"; @@ -344,10 +348,6 @@ request(char *urlin) if (checksum && strcmp(checksum, "-") != 0) r->validsum = strtoul(checksum, NULL, 0); r->content_length = -1; /* Unknown */ - if (status && strcmp(status, "-") != 0) - r->validstatus = strtoul(status, NULL, 0); - else - r->validstatus = accepted_status; if (opt_accel) { host = strchr(url, '/') + 2; url = strchr(host, '/'); @@ -465,7 +465,6 @@ usage(void) fprintf(stderr, " -c Check checksum agains trace\n"); fprintf(stderr, " -i Send random If-Modified-Since times\n"); fprintf(stderr, " -l Connection lifetime timeout (default 60)\n"); - fprintf(stderr, " -s HTTP status expected (default 200, 0 == ignore)\n"); fprintf(stderr, " -a Accelerator mode\n"); } @@ -514,9 +513,9 @@ main(argc, argv) opt_checksum = 1; break; case 't': - opt_checksum = 1; /* Tracing requires checksums */ - trace_file = fopen(optarg, "w"); + trace_file = fopen(optarg, "a"); assert(trace_file); + setbuf(trace_file, NULL); break; case 'r': opt_range = 1; @@ -579,9 +578,12 @@ main(argc, argv) (int) total_bytes_read / 1024 / 1024, (int) total_bytes_read / 1024 / dt); reqpersec = 0; - if (dt > process_lifetime) - exit(0); + /* + * if (dt > process_lifetime) + * exit(0); + */ } } + printf("Exiting normally\n"); return 0; } diff --git a/test-suite/tcp-banger3.c b/test-suite/tcp-banger3.c index 0d712223d5..857c2ac0b6 100644 --- a/test-suite/tcp-banger3.c +++ b/test-suite/tcp-banger3.c @@ -136,8 +136,10 @@ get_url(const char *url) *t = '\0'; port = (unsigned short) atoi(t + 1); } +#if 0 if ((int) port != 80) return 0; +#endif t = strchr(url + 7, '/'); strncpy(path, (t ? t : "/"), URL_BUF_SZ); memset(&S, '\0', sizeof(S)); -- 2.39.5