merge conflicts and update configuration between 1.13.1 and 1.16.3
This commit is contained in:
parent
7a540f2bd4
commit
1481e2a94f
|
@ -1,2 +0,0 @@
|
|||
github: [NLnetLabs]
|
||||
custom: ['https://nlnetlabs.nl/funding/']
|
|
@ -1,344 +0,0 @@
|
|||
language: c
|
||||
|
||||
git:
|
||||
depth: 5
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libssl-dev
|
||||
- libevent-dev
|
||||
- libexpat-dev
|
||||
- clang
|
||||
homebrew:
|
||||
packages:
|
||||
- openssl
|
||||
- libevent
|
||||
- expat
|
||||
update: true
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- os: linux
|
||||
name: GCC on Linux, Amd64
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: linux
|
||||
name: Clang on Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: osx
|
||||
name: Clang on OS X, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
env:
|
||||
- TEST_OSX=yes
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl/"
|
||||
- os: linux
|
||||
name: Libevent, GCC on Linux, Amd64
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
env:
|
||||
- TEST_LIBEVENT=yes
|
||||
- CONFIG_OPTS="--with-libevent"
|
||||
- os: linux
|
||||
name: Libevent, Clang on Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
env:
|
||||
- TEST_LIBEVENT=yes
|
||||
- CONFIG_OPTS="--with-libevent"
|
||||
- os: osx
|
||||
name: Libevent, Clang on OS X, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
env:
|
||||
- TEST_OSX=yes
|
||||
- TEST_LIBEVENT=yes
|
||||
- CONFIG_OPTS="--with-ssl=/usr/local/opt/openssl/ --with-libevent=/usr/local/opt/libevent/"
|
||||
- os: linux
|
||||
name: UBsan, GCC on Linux, Amd64
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_UBSAN=yes
|
||||
- os: linux
|
||||
name: UBsan, Clang on Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_UBSAN=yes
|
||||
- os: linux
|
||||
name: Asan, GCC on Linux, Amd64
|
||||
compiler: gcc
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_ASAN=yes
|
||||
- os: linux
|
||||
name: Asan, Clang on Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_ASAN=yes
|
||||
- os: linux
|
||||
name: GCC on Linux, Aarch64
|
||||
compiler: gcc
|
||||
arch: arm64
|
||||
dist: bionic
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: linux
|
||||
name: Clang on Linux, Aarch64
|
||||
compiler: clang
|
||||
arch: arm64
|
||||
dist: bionic
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: linux
|
||||
name: GCC on Linux, PowerPC64
|
||||
compiler: gcc
|
||||
arch: ppc64le
|
||||
dist: bionic
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: linux
|
||||
name: Clang on Linux, PowerPC64
|
||||
compiler: clang
|
||||
arch: ppc64le
|
||||
dist: bionic
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: linux
|
||||
name: GCC on Linux, s390x
|
||||
compiler: gcc
|
||||
arch: s390x
|
||||
dist: bionic
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: linux
|
||||
name: Clang on Linux, s390x
|
||||
compiler: clang
|
||||
arch: s390x
|
||||
dist: bionic
|
||||
env:
|
||||
- CONFIG_OPTS="--enable-debug --disable-flto"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: Apple iPhone on iOS, armv7
|
||||
compiler: clang
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=armv7-apple-ios
|
||||
- OPENSSL_HOST=ios-cross
|
||||
- IOS_SDK=iPhoneOS
|
||||
- IOS_CPU=armv7s
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: Apple iPhone on iOS, arm64
|
||||
compiler: clang
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=aarch64-apple-ios
|
||||
- OPENSSL_HOST=ios64-cross
|
||||
- IOS_SDK=iPhoneOS
|
||||
- IOS_CPU=arm64
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: Apple TV on iOS, arm64
|
||||
compiler: clang
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=aarch64-apple-ios
|
||||
- OPENSSL_HOST=ios64-cross
|
||||
- IOS_SDK=AppleTVOS
|
||||
- IOS_CPU=arm64
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: Apple Watch on iOS, armv7
|
||||
compiler: clang
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=armv7-apple-ios
|
||||
- OPENSSL_HOST=ios-cross
|
||||
- IOS_SDK=WatchOS
|
||||
- IOS_CPU=armv7k
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: iPhoneSimulator on OS X, i386
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=i386-apple-ios
|
||||
- OPENSSL_HOST=iphoneos-cross
|
||||
- IOS_CPU=i386
|
||||
- IOS_SDK=iPhoneSimulator
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: iPhoneSimulator on OS X, x86_64
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=x86_64-apple-ios
|
||||
- OPENSSL_HOST=iphoneos-cross
|
||||
- IOS_CPU=x86_64
|
||||
- IOS_SDK=iPhoneSimulator
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: AppleTVSimulator on OS X, x86_64
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=x86_64-apple-ios
|
||||
- OPENSSL_HOST=iphoneos-cross
|
||||
- IOS_CPU=x86_64
|
||||
- IOS_SDK=AppleTVSimulator
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: osx
|
||||
osx_image: xcode10
|
||||
name: WatchSimulator on OS X, i386
|
||||
env:
|
||||
- TEST_IOS=yes
|
||||
- AUTOTOOLS_HOST=i386-apple-ios
|
||||
- OPENSSL_HOST=iphoneos-cross
|
||||
- IOS_CPU=i386
|
||||
- IOS_SDK=WatchSimulator
|
||||
- IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU"
|
||||
- os: linux
|
||||
name: Android armv7a, Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_ANDROID=yes
|
||||
- AUTOTOOLS_HOST=armv7a-linux-androideabi
|
||||
- OPENSSL_HOST=android-arm
|
||||
- ANDROID_CPU=armv7a
|
||||
- ANDROID_API=23
|
||||
- ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
|
||||
- ANDROID_SDK_ROOT="$HOME/android-sdk"
|
||||
- ANDROID_NDK_ROOT="$HOME/android-ndk"
|
||||
- os: linux
|
||||
name: Android aarch64, Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_ANDROID=yes
|
||||
- AUTOTOOLS_HOST=aarch64-linux-android
|
||||
- OPENSSL_HOST=android-arm64
|
||||
- ANDROID_CPU=aarch64
|
||||
- ANDROID_API=23
|
||||
- ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
|
||||
- ANDROID_SDK_ROOT="$HOME/android-sdk"
|
||||
- ANDROID_NDK_ROOT="$HOME/android-ndk"
|
||||
- os: linux
|
||||
name: Android x86, Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_ANDROID=yes
|
||||
- AUTOTOOLS_HOST=i686-linux-android
|
||||
- OPENSSL_HOST=android-x86
|
||||
- ANDROID_CPU=x86
|
||||
- ANDROID_API=23
|
||||
- ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
|
||||
- ANDROID_SDK_ROOT="$HOME/android-sdk"
|
||||
- ANDROID_NDK_ROOT="$HOME/android-ndk"
|
||||
- os: linux
|
||||
name: Android x86_64, Linux, Amd64
|
||||
compiler: clang
|
||||
arch: amd64
|
||||
dist: bionic
|
||||
env:
|
||||
- TEST_ANDROID=yes
|
||||
- AUTOTOOLS_HOST=x86_64-linux-android
|
||||
- OPENSSL_HOST=android-x86_64
|
||||
- ANDROID_CPU=x86_64
|
||||
- ANDROID_API=23
|
||||
- ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU"
|
||||
- ANDROID_SDK_ROOT="$HOME/android-sdk"
|
||||
- ANDROID_NDK_ROOT="$HOME/android-ndk"
|
||||
|
||||
allow_failures:
|
||||
- os: linux
|
||||
name: Android armv7a, Linux, Amd64
|
||||
- os: linux
|
||||
name: Android aarch64, Linux, Amd64
|
||||
- os: linux
|
||||
name: Android x86, Linux, Amd64
|
||||
- os: linux
|
||||
name: Android x86_64, Linux, Amd64
|
||||
|
||||
before_script:
|
||||
- |
|
||||
if [ "$TEST_ANDROID" = "yes" ]; then
|
||||
./contrib/android/install_tools.sh
|
||||
elif [ "$TEST_IOS" = "yes" ]; then
|
||||
./contrib/ios/install_tools.sh
|
||||
fi
|
||||
|
||||
# The Travis docs say to avoid calling exit in the script. It leads to
|
||||
# some code duplication to avoid failures in cross-compiles. Also see
|
||||
# https://docs.travis-ci.com/user/job-lifecycle/ in the Travis docs.
|
||||
script:
|
||||
- |
|
||||
if [ "$TEST_UBSAN" = "yes" ]; then
|
||||
export CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover"
|
||||
./configure
|
||||
make -j 2
|
||||
make test
|
||||
elif [ "$TEST_ASAN" = "yes" ]; then
|
||||
export CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address"
|
||||
./configure
|
||||
make -j 2
|
||||
make test
|
||||
elif [ "$TEST_IOS" = "yes" ]; then
|
||||
export AUTOTOOLS_BUILD="$(./config.guess)"
|
||||
export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig"
|
||||
source ./contrib/ios/setenv_ios.sh
|
||||
./contrib/ios/install_openssl.sh
|
||||
./contrib/ios/install_expat.sh
|
||||
./configure \
|
||||
--build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" \
|
||||
--prefix="$IOS_PREFIX" \
|
||||
--with-ssl="$IOS_PREFIX" --disable-gost \
|
||||
--with-libexpat="$IOS_PREFIX";
|
||||
make -j 2
|
||||
make install
|
||||
elif [ "$TEST_ANDROID" = "yes" ]; then
|
||||
export AUTOTOOLS_BUILD="$(./config.guess)"
|
||||
export PKG_CONFIG_PATH="$ANDROID_PREFIX/lib/pkgconfig"
|
||||
./contrib/android/install_ndk.sh
|
||||
source ./contrib/android/setenv_android.sh
|
||||
./contrib/android/install_openssl.sh
|
||||
./contrib/android/install_expat.sh
|
||||
./configure \
|
||||
--build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" \
|
||||
--prefix="$ANDROID_PREFIX" \
|
||||
--with-ssl="$ANDROID_PREFIX" --disable-gost \
|
||||
--with-libexpat="$ANDROID_PREFIX";
|
||||
make -j 2
|
||||
make install
|
||||
elif [ "$TEST_OSX" = "yes" ]; then
|
||||
./configure --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl/
|
||||
make -j 2
|
||||
make test
|
||||
(cd testdata/clang-analysis.tdir; bash clang-analysis.test)
|
||||
else
|
||||
./configure ${CONFIG_OPTS}
|
||||
make -j 2
|
||||
make test
|
||||
(cd testdata/clang-analysis.tdir; bash clang-analysis.test)
|
||||
fi
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,14 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2021 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2021-01-08'
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2022-08-01'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
|
@ -50,7 +52,14 @@ timestamp='2021-01-08'
|
|||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# It is wrong to echo any other type of specification.
|
||||
|
||||
me=$(echo "$0" | sed -e 's,.*/,,')
|
||||
# The "shellcheck disable" line above the timestamp inhibits complaints
|
||||
# about features and limitations of the classic Bourne shell that were
|
||||
# superseded or lifted in POSIX. However, this script identifies a wide
|
||||
# variety of pre-POSIX systems that do not have POSIX shells at all, and
|
||||
# even some reasonably current systems (Solaris 10 as case-in-point) still
|
||||
# have a pre-POSIX /bin/sh.
|
||||
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||
|
@ -67,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2021 Free Software Foundation, Inc.
|
||||
Copyright 1992-2022 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
@ -112,9 +121,11 @@ esac
|
|||
|
||||
# Split fields of configuration type
|
||||
# shellcheck disable=SC2162
|
||||
saved_IFS=$IFS
|
||||
IFS="-" read field1 field2 field3 field4 <<EOF
|
||||
$1
|
||||
EOF
|
||||
IFS=$saved_IFS
|
||||
|
||||
# Separate into logical components for further validation
|
||||
case $1 in
|
||||
|
@ -163,6 +174,10 @@ case $1 in
|
|||
basic_machine=$field1
|
||||
basic_os=$field2
|
||||
;;
|
||||
zephyr*)
|
||||
basic_machine=$field1-unknown
|
||||
basic_os=$field2
|
||||
;;
|
||||
# Manufacturers
|
||||
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
|
||||
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
|
||||
|
@ -769,22 +784,22 @@ case $basic_machine in
|
|||
vendor=hp
|
||||
;;
|
||||
i*86v32)
|
||||
cpu=$(echo "$1" | sed -e 's/86.*/86/')
|
||||
cpu=`echo "$1" | sed -e 's/86.*/86/'`
|
||||
vendor=pc
|
||||
basic_os=sysv32
|
||||
;;
|
||||
i*86v4*)
|
||||
cpu=$(echo "$1" | sed -e 's/86.*/86/')
|
||||
cpu=`echo "$1" | sed -e 's/86.*/86/'`
|
||||
vendor=pc
|
||||
basic_os=sysv4
|
||||
;;
|
||||
i*86v)
|
||||
cpu=$(echo "$1" | sed -e 's/86.*/86/')
|
||||
cpu=`echo "$1" | sed -e 's/86.*/86/'`
|
||||
vendor=pc
|
||||
basic_os=sysv
|
||||
;;
|
||||
i*86sol2)
|
||||
cpu=$(echo "$1" | sed -e 's/86.*/86/')
|
||||
cpu=`echo "$1" | sed -e 's/86.*/86/'`
|
||||
vendor=pc
|
||||
basic_os=solaris2
|
||||
;;
|
||||
|
@ -917,14 +932,16 @@ case $basic_machine in
|
|||
;;
|
||||
leon-*|leon[3-9]-*)
|
||||
cpu=sparc
|
||||
vendor=$(echo "$basic_machine" | sed 's/-.*//')
|
||||
vendor=`echo "$basic_machine" | sed 's/-.*//'`
|
||||
;;
|
||||
|
||||
*-*)
|
||||
# shellcheck disable=SC2162
|
||||
saved_IFS=$IFS
|
||||
IFS="-" read cpu vendor <<EOF
|
||||
$basic_machine
|
||||
EOF
|
||||
IFS=$saved_IFS
|
||||
;;
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
|
@ -1003,6 +1020,11 @@ case $cpu-$vendor in
|
|||
;;
|
||||
|
||||
# Here we normalize CPU types with a missing or matching vendor
|
||||
armh-unknown | armh-alt)
|
||||
cpu=armv7l
|
||||
vendor=alt
|
||||
basic_os=${basic_os:-linux-gnueabihf}
|
||||
;;
|
||||
dpx20-unknown | dpx20-bull)
|
||||
cpu=rs6000
|
||||
vendor=bull
|
||||
|
@ -1084,7 +1106,7 @@ case $cpu-$vendor in
|
|||
cpu=mipsisa64sb1el
|
||||
;;
|
||||
sh5e[lb]-*)
|
||||
cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
|
||||
cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
|
||||
;;
|
||||
spur-*)
|
||||
cpu=spur
|
||||
|
@ -1102,9 +1124,9 @@ case $cpu-$vendor in
|
|||
cpu=x86_64
|
||||
;;
|
||||
xscale-* | xscalee[bl]-*)
|
||||
cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
|
||||
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
|
||||
;;
|
||||
arm64-*)
|
||||
arm64-* | aarch64le-*)
|
||||
cpu=aarch64
|
||||
;;
|
||||
|
||||
|
@ -1165,7 +1187,7 @@ case $cpu-$vendor in
|
|||
| alphapca5[67] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| amdgcn \
|
||||
| arc | arceb \
|
||||
| arc | arceb | arc32 | arc64 \
|
||||
| arm | arm[lb]e | arme[lb] | armv* \
|
||||
| avr | avr32 \
|
||||
| asmjs \
|
||||
|
@ -1185,7 +1207,7 @@ case $cpu-$vendor in
|
|||
| k1om \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| loongarch32 | loongarch64 | loongarchx32 \
|
||||
| loongarch32 | loongarch64 \
|
||||
| m32c | m32r | m32rle \
|
||||
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
|
||||
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
|
||||
|
@ -1204,9 +1226,13 @@ case $cpu-$vendor in
|
|||
| mips64vr5900 | mips64vr5900el \
|
||||
| mipsisa32 | mipsisa32el \
|
||||
| mipsisa32r2 | mipsisa32r2el \
|
||||
| mipsisa32r3 | mipsisa32r3el \
|
||||
| mipsisa32r5 | mipsisa32r5el \
|
||||
| mipsisa32r6 | mipsisa32r6el \
|
||||
| mipsisa64 | mipsisa64el \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64r3 | mipsisa64r3el \
|
||||
| mipsisa64r5 | mipsisa64r5el \
|
||||
| mipsisa64r6 | mipsisa64r6el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
|
@ -1283,35 +1309,37 @@ esac
|
|||
if test x$basic_os != x
|
||||
then
|
||||
|
||||
# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
|
||||
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
|
||||
# set os.
|
||||
case $basic_os in
|
||||
gnu/linux*)
|
||||
kernel=linux
|
||||
os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
|
||||
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
|
||||
;;
|
||||
os2-emx)
|
||||
kernel=os2
|
||||
os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
|
||||
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
|
||||
;;
|
||||
nto-qnx*)
|
||||
kernel=nto
|
||||
os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
|
||||
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
|
||||
;;
|
||||
*-*)
|
||||
# shellcheck disable=SC2162
|
||||
saved_IFS=$IFS
|
||||
IFS="-" read kernel os <<EOF
|
||||
$basic_os
|
||||
EOF
|
||||
IFS=$saved_IFS
|
||||
;;
|
||||
# Default OS when just kernel was specified
|
||||
nto*)
|
||||
kernel=nto
|
||||
os=$(echo $basic_os | sed -e 's|nto|qnx|')
|
||||
os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
|
||||
;;
|
||||
linux*)
|
||||
kernel=linux
|
||||
os=$(echo $basic_os | sed -e 's|linux|gnu|')
|
||||
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
|
||||
;;
|
||||
*)
|
||||
kernel=
|
||||
|
@ -1332,7 +1360,7 @@ case $os in
|
|||
os=cnk
|
||||
;;
|
||||
solaris1 | solaris1.*)
|
||||
os=$(echo $os | sed -e 's|solaris1|sunos4|')
|
||||
os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
|
||||
;;
|
||||
solaris)
|
||||
os=solaris2
|
||||
|
@ -1361,7 +1389,7 @@ case $os in
|
|||
os=sco3.2v4
|
||||
;;
|
||||
sco3.2.[4-9]*)
|
||||
os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
|
||||
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
|
||||
;;
|
||||
sco*v* | scout)
|
||||
# Don't match below
|
||||
|
@ -1391,7 +1419,7 @@ case $os in
|
|||
os=lynxos
|
||||
;;
|
||||
mac[0-9]*)
|
||||
os=$(echo "$os" | sed -e 's|mac|macos|')
|
||||
os=`echo "$os" | sed -e 's|mac|macos|'`
|
||||
;;
|
||||
opened*)
|
||||
os=openedition
|
||||
|
@ -1400,10 +1428,10 @@ case $os in
|
|||
os=os400
|
||||
;;
|
||||
sunos5*)
|
||||
os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
|
||||
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
|
||||
;;
|
||||
sunos6*)
|
||||
os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
|
||||
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
|
||||
;;
|
||||
wince*)
|
||||
os=wince
|
||||
|
@ -1437,7 +1465,7 @@ case $os in
|
|||
;;
|
||||
# Preserve the version number of sinix5.
|
||||
sinix5.*)
|
||||
os=$(echo $os | sed -e 's|sinix|sysv|')
|
||||
os=`echo "$os" | sed -e 's|sinix|sysv|'`
|
||||
;;
|
||||
sinix*)
|
||||
os=sysv4
|
||||
|
@ -1684,7 +1712,7 @@ fi
|
|||
# Now, validate our (potentially fixed-up) OS.
|
||||
case $os in
|
||||
# Sometimes we do "kernel-libc", so those need to count as OSes.
|
||||
musl* | newlib* | uclibc*)
|
||||
musl* | newlib* | relibc* | uclibc*)
|
||||
;;
|
||||
# Likewise for "kernel-abi"
|
||||
eabi* | gnueabi*)
|
||||
|
@ -1707,12 +1735,12 @@ case $os in
|
|||
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
|
||||
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
|
||||
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
|
||||
| bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
|
||||
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
|
||||
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
|
||||
| bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
|
||||
| ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
|
||||
| udi* | lites* | ieee* | go32* | aux* | hcos* \
|
||||
| chorusrdb* | cegcc* | glidix* \
|
||||
| chorusrdb* | cegcc* | glidix* | serenity* \
|
||||
| cygwin* | msys* | pe* | moss* | proelf* | rtems* \
|
||||
| midipix* | mingw32* | mingw64* | mint* \
|
||||
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
|
||||
|
@ -1725,7 +1753,8 @@ case $os in
|
|||
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
|
||||
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
||||
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
||||
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
|
||||
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
||||
| fiwix* )
|
||||
;;
|
||||
# This one is extra strict with allowed versions
|
||||
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
||||
|
@ -1742,11 +1771,12 @@ esac
|
|||
# As a final step for OS-related things, validate the OS-kernel combination
|
||||
# (given a valid OS), if there is a kernel.
|
||||
case $kernel-$os in
|
||||
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
|
||||
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
|
||||
| linux-musl* | linux-relibc* | linux-uclibc* )
|
||||
;;
|
||||
uclinux-uclibc* )
|
||||
;;
|
||||
-dietlibc* | -newlib* | -musl* | -uclibc* )
|
||||
-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
|
||||
# These are just libc implementations, not actual OSes, and thus
|
||||
# require a kernel.
|
||||
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
|
||||
|
|
|
@ -224,7 +224,7 @@ struct ub_result {
|
|||
* It is called with
|
||||
* void* my_arg: your pointer to a (struct of) data of your choice,
|
||||
* or NULL.
|
||||
* int err: if 0 all is OK, otherwise an error occured and no results
|
||||
* int err: if 0 all is OK, otherwise an error occurred and no results
|
||||
* are forthcoming.
|
||||
* struct result: pointer to more detailed result structure.
|
||||
* This structure is allocated on the heap and needs to be
|
||||
|
@ -232,6 +232,35 @@ struct ub_result {
|
|||
*/
|
||||
typedef void (*ub_callback_type)(void*, int, struct ub_result*);
|
||||
|
||||
/**
|
||||
* The error constants
|
||||
*/
|
||||
enum ub_ctx_err {
|
||||
/** no error */
|
||||
UB_NOERROR = 0,
|
||||
/** socket operation. Set to -1, so that if an error from _fd() is
|
||||
* passed (-1) it gives a socket error. */
|
||||
UB_SOCKET = -1,
|
||||
/** alloc failure */
|
||||
UB_NOMEM = -2,
|
||||
/** syntax error */
|
||||
UB_SYNTAX = -3,
|
||||
/** DNS service failed */
|
||||
UB_SERVFAIL = -4,
|
||||
/** fork() failed */
|
||||
UB_FORKFAIL = -5,
|
||||
/** cfg change after finalize() */
|
||||
UB_AFTERFINAL = -6,
|
||||
/** initialization failed (bad settings) */
|
||||
UB_INITFAIL = -7,
|
||||
/** error in pipe communication with async bg worker */
|
||||
UB_PIPE = -8,
|
||||
/** error reading from file (resolv.conf) */
|
||||
UB_READFILE = -9,
|
||||
/** error async_id does not exist or result already been delivered */
|
||||
UB_NOID = -10
|
||||
};
|
||||
|
||||
/**
|
||||
* Create a resolving and validation context.
|
||||
* The information from /etc/resolv.conf and /etc/hosts is not utilised by
|
||||
|
@ -563,6 +592,7 @@ void ub_resolve_free(struct ub_result* result);
|
|||
/**
|
||||
* Convert error value to a human readable string.
|
||||
* @param err: error code from one of the libunbound functions.
|
||||
* The error codes are from the type enum ub_ctx_err.
|
||||
* @return pointer to constant text string, zero terminated.
|
||||
*/
|
||||
const char* ub_strerror(int err);
|
||||
|
@ -695,6 +725,8 @@ struct ub_server_stats {
|
|||
long long qtcp;
|
||||
/** number of outgoing queries over TCP */
|
||||
long long qtcp_outgoing;
|
||||
/** number of outgoing queries over UDP */
|
||||
long long qudp_outgoing;
|
||||
/** number of queries over (DNS over) TLS */
|
||||
long long qtls;
|
||||
/** number of queries over (DNS over) HTTPS */
|
||||
|
|
|
@ -7612,7 +7612,7 @@ static int zonemd_simple_domain(struct auth_zone* z, int hashalgo,
|
|||
struct secalgo_hash* h, struct auth_data* node,
|
||||
struct regional* region, struct sldns_buffer* buf, char** reason)
|
||||
{
|
||||
const size_t rrlistsize = 65536;
|
||||
#define rrlistsize 65536
|
||||
struct auth_rrset* rrlist[rrlistsize];
|
||||
size_t i, rrnum = 0;
|
||||
/* see if the domain is out of scope, the zone origin,
|
||||
|
|
|
@ -340,6 +340,15 @@ int event_del(struct event* ev)
|
|||
FD_CLR(FD_SET_T ev->ev_fd, &ev->ev_base->writes);
|
||||
FD_CLR(FD_SET_T ev->ev_fd, &ev->ev_base->ready);
|
||||
FD_CLR(FD_SET_T ev->ev_fd, &ev->ev_base->content);
|
||||
if(ev->ev_fd == ev->ev_base->maxfd) {
|
||||
int i = ev->ev_base->maxfd - 1;
|
||||
for (; i > 3; i--) {
|
||||
if (NULL != ev->ev_base->fds[i]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
ev->ev_base->maxfd = i;
|
||||
}
|
||||
}
|
||||
ev->added = 0;
|
||||
return 0;
|
||||
|
|
|
@ -51,6 +51,16 @@
|
|||
#include "dnstap/dnstap.h"
|
||||
#include "dnscrypt/dnscrypt.h"
|
||||
#include "services/listen_dnsport.h"
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETDB_H
|
||||
#include <netdb.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENSSL_SSL_H
|
||||
#include <openssl/ssl.h>
|
||||
#endif
|
||||
|
@ -152,7 +162,7 @@ struct internal_signal {
|
|||
static struct comm_point* comm_point_create_tcp_handler(
|
||||
struct comm_base *base, struct comm_point* parent, size_t bufsize,
|
||||
struct sldns_buffer* spoolbuf, comm_point_callback_type* callback,
|
||||
void* callback_arg);
|
||||
void* callback_arg, struct unbound_socket* socket);
|
||||
|
||||
/* -------- End of local definitions -------- */
|
||||
|
||||
|
@ -289,6 +299,8 @@ udp_send_errno_needs_log(struct sockaddr* addr, socklen_t addrlen)
|
|||
# ifdef ENETDOWN
|
||||
case ENETDOWN:
|
||||
# endif
|
||||
case EPERM:
|
||||
case EACCES:
|
||||
if(verbosity < VERB_ALGO)
|
||||
return 0;
|
||||
default:
|
||||
|
@ -302,7 +314,7 @@ udp_send_errno_needs_log(struct sockaddr* addr, socklen_t addrlen)
|
|||
/* 'Cannot assign requested address' also when disconnected */
|
||||
|| (errno == EADDRNOTAVAIL)
|
||||
# endif
|
||||
) && verbosity < VERB_DETAIL)
|
||||
) && verbosity < VERB_ALGO)
|
||||
return 0;
|
||||
# ifdef EADDRINUSE
|
||||
/* If SO_REUSEADDR is set, we could try to connect to the same server
|
||||
|
@ -408,7 +420,9 @@ static void p_ancil(const char* str, struct comm_reply* r)
|
|||
log_info("%s: unknown srctype %d", str, r->srctype);
|
||||
return;
|
||||
}
|
||||
|
||||
if(r->srctype == 6) {
|
||||
#ifdef IPV6_PKTINFO
|
||||
char buf[1024];
|
||||
if(inet_ntop(AF_INET6, &r->pktinfo.v6info.ipi6_addr,
|
||||
buf, (socklen_t)sizeof(buf)) == 0) {
|
||||
|
@ -416,6 +430,7 @@ static void p_ancil(const char* str, struct comm_reply* r)
|
|||
}
|
||||
buf[sizeof(buf)-1]=0;
|
||||
log_info("%s: %s %d", str, buf, r->pktinfo.v6info.ipi6_ifindex);
|
||||
#endif
|
||||
} else if(r->srctype == 4) {
|
||||
#ifdef IP_PKTINFO
|
||||
char buf1[1024], buf2[1024];
|
||||
|
@ -803,6 +818,7 @@ setup_tcp_handler(struct comm_point* c, int fd, int cur, int max)
|
|||
#endif
|
||||
c->tcp_is_reading = 1;
|
||||
c->tcp_byte_count = 0;
|
||||
c->tcp_keepalive = 0;
|
||||
/* if more than half the tcp handlers are in use, use a shorter
|
||||
* timeout for this TCP connection, we need to make space for
|
||||
* other connections to be able to get attention */
|
||||
|
@ -928,7 +944,16 @@ int comm_point_perform_accept(struct comm_point* c,
|
|||
|
||||
#ifdef USE_WINSOCK
|
||||
static long win_bio_cb(BIO *b, int oper, const char* ATTR_UNUSED(argp),
|
||||
int ATTR_UNUSED(argi), long argl, long retvalue)
|
||||
#ifdef HAVE_BIO_SET_CALLBACK_EX
|
||||
size_t ATTR_UNUSED(len),
|
||||
#endif
|
||||
int ATTR_UNUSED(argi), long argl,
|
||||
#ifndef HAVE_BIO_SET_CALLBACK_EX
|
||||
long retvalue
|
||||
#else
|
||||
int retvalue, size_t* ATTR_UNUSED(processed)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
int wsa_err = WSAGetLastError(); /* store errcode before it is gone */
|
||||
verbose(VERB_ALGO, "bio_cb %d, %s %s %s", oper,
|
||||
|
@ -958,9 +983,17 @@ comm_point_tcp_win_bio_cb(struct comm_point* c, void* thessl)
|
|||
{
|
||||
SSL* ssl = (SSL*)thessl;
|
||||
/* set them both just in case, but usually they are the same BIO */
|
||||
#ifdef HAVE_BIO_SET_CALLBACK_EX
|
||||
BIO_set_callback_ex(SSL_get_rbio(ssl), &win_bio_cb);
|
||||
#else
|
||||
BIO_set_callback(SSL_get_rbio(ssl), &win_bio_cb);
|
||||
#endif
|
||||
BIO_set_callback_arg(SSL_get_rbio(ssl), (char*)c->ev->ev);
|
||||
#ifdef HAVE_BIO_SET_CALLBACK_EX
|
||||
BIO_set_callback_ex(SSL_get_wbio(ssl), &win_bio_cb);
|
||||
#else
|
||||
BIO_set_callback(SSL_get_wbio(ssl), &win_bio_cb);
|
||||
#endif
|
||||
BIO_set_callback_arg(SSL_get_wbio(ssl), (char*)c->ev->ev);
|
||||
}
|
||||
#endif
|
||||
|
@ -1022,6 +1055,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg)
|
|||
/* clear leftover flags from previous use, and then set the
|
||||
* correct event base for the event structure for libevent */
|
||||
ub_event_free(c_hdl->ev->ev);
|
||||
c_hdl->ev->ev = NULL;
|
||||
if((c_hdl->type == comm_tcp && c_hdl->tcp_req_info) ||
|
||||
c_hdl->type == comm_local || c_hdl->type == comm_raw)
|
||||
c_hdl->tcp_do_toggle_rw = 0;
|
||||
|
@ -1078,6 +1112,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg)
|
|||
/* grab the tcp handler buffers */
|
||||
c->cur_tcp_count++;
|
||||
c->tcp_free = c_hdl->tcp_free;
|
||||
c_hdl->tcp_free = NULL;
|
||||
if(!c->tcp_free) {
|
||||
/* stop accepting incoming queries for now. */
|
||||
comm_point_stop_listening(c);
|
||||
|
@ -1099,9 +1134,11 @@ reclaim_tcp_handler(struct comm_point* c)
|
|||
}
|
||||
comm_point_close(c);
|
||||
if(c->tcp_parent) {
|
||||
c->tcp_parent->cur_tcp_count--;
|
||||
c->tcp_free = c->tcp_parent->tcp_free;
|
||||
c->tcp_parent->tcp_free = c;
|
||||
if(c != c->tcp_parent->tcp_free) {
|
||||
c->tcp_parent->cur_tcp_count--;
|
||||
c->tcp_free = c->tcp_parent->tcp_free;
|
||||
c->tcp_parent->tcp_free = c;
|
||||
}
|
||||
if(!c->tcp_free) {
|
||||
/* re-enable listening on accept socket */
|
||||
comm_point_start_listening(c->tcp_parent, -1, -1);
|
||||
|
@ -1109,6 +1146,8 @@ reclaim_tcp_handler(struct comm_point* c)
|
|||
}
|
||||
c->tcp_more_read_again = NULL;
|
||||
c->tcp_more_write_again = NULL;
|
||||
c->tcp_byte_count = 0;
|
||||
sldns_buffer_clear(c->buffer);
|
||||
}
|
||||
|
||||
/** do the callback when writing is done */
|
||||
|
@ -1170,23 +1209,22 @@ squelch_err_ssl_handshake(unsigned long err)
|
|||
{
|
||||
if(verbosity >= VERB_QUERY)
|
||||
return 0; /* only squelch on low verbosity */
|
||||
/* this is very specific, we could filter on ERR_GET_REASON()
|
||||
* (the third element in ERR_PACK) */
|
||||
if(err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_GET_RECORD, SSL_R_HTTPS_PROXY_REQUEST) ||
|
||||
err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_GET_RECORD, SSL_R_HTTP_REQUEST) ||
|
||||
err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER) ||
|
||||
err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_READ_BYTES, SSL_R_SSLV3_ALERT_BAD_CERTIFICATE)
|
||||
if(ERR_GET_LIB(err) == ERR_LIB_SSL &&
|
||||
(ERR_GET_REASON(err) == SSL_R_HTTPS_PROXY_REQUEST ||
|
||||
ERR_GET_REASON(err) == SSL_R_HTTP_REQUEST ||
|
||||
ERR_GET_REASON(err) == SSL_R_WRONG_VERSION_NUMBER ||
|
||||
ERR_GET_REASON(err) == SSL_R_SSLV3_ALERT_BAD_CERTIFICATE
|
||||
#ifdef SSL_F_TLS_POST_PROCESS_CLIENT_HELLO
|
||||
|| err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_POST_PROCESS_CLIENT_HELLO, SSL_R_NO_SHARED_CIPHER)
|
||||
|| ERR_GET_REASON(err) == SSL_R_NO_SHARED_CIPHER
|
||||
#endif
|
||||
#ifdef SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO
|
||||
|| err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO, SSL_R_UNKNOWN_PROTOCOL)
|
||||
|| err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO, SSL_R_UNSUPPORTED_PROTOCOL)
|
||||
|| ERR_GET_REASON(err) == SSL_R_UNKNOWN_PROTOCOL
|
||||
|| ERR_GET_REASON(err) == SSL_R_UNSUPPORTED_PROTOCOL
|
||||
# ifdef SSL_R_VERSION_TOO_LOW
|
||||
|| err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO, SSL_R_VERSION_TOO_LOW)
|
||||
|| ERR_GET_REASON(err) == SSL_R_VERSION_TOO_LOW
|
||||
# endif
|
||||
#endif
|
||||
)
|
||||
))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1200,7 +1238,7 @@ ssl_handshake(struct comm_point* c)
|
|||
int r;
|
||||
if(c->ssl_shake_state == comm_ssl_shake_hs_read) {
|
||||
/* read condition satisfied back to writing */
|
||||
comm_point_listen_for_rw(c, 1, 1);
|
||||
comm_point_listen_for_rw(c, 0, 1);
|
||||
c->ssl_shake_state = comm_ssl_shake_none;
|
||||
return 1;
|
||||
}
|
||||
|
@ -1239,6 +1277,12 @@ ssl_handshake(struct comm_point* c)
|
|||
if(errno == ECONNRESET && verbosity < 2)
|
||||
return 0; /* silence reset by peer */
|
||||
#endif
|
||||
if(!tcp_connect_errno_needs_log(
|
||||
(struct sockaddr*)&c->repinfo.addr,
|
||||
c->repinfo.addrlen))
|
||||
return 0; /* silence connect failures that
|
||||
show up because after connect this is the
|
||||
first system call that accesses the socket */
|
||||
if(errno != 0)
|
||||
log_err("SSL_handshake syscall: %s",
|
||||
strerror(errno));
|
||||
|
@ -1257,7 +1301,11 @@ ssl_handshake(struct comm_point* c)
|
|||
if((SSL_get_verify_mode(c->ssl)&SSL_VERIFY_PEER)) {
|
||||
/* verification */
|
||||
if(SSL_get_verify_result(c->ssl) == X509_V_OK) {
|
||||
#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE
|
||||
X509* x = SSL_get1_peer_certificate(c->ssl);
|
||||
#else
|
||||
X509* x = SSL_get_peer_certificate(c->ssl);
|
||||
#endif
|
||||
if(!x) {
|
||||
log_addr(VERB_ALGO, "SSL connection failed: "
|
||||
"no certificate",
|
||||
|
@ -1283,7 +1331,11 @@ ssl_handshake(struct comm_point* c)
|
|||
#endif
|
||||
X509_free(x);
|
||||
} else {
|
||||
#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE
|
||||
X509* x = SSL_get1_peer_certificate(c->ssl);
|
||||
#else
|
||||
X509* x = SSL_get_peer_certificate(c->ssl);
|
||||
#endif
|
||||
if(x) {
|
||||
log_cert(VERB_ALGO, "peer certificate", x);
|
||||
X509_free(x);
|
||||
|
@ -1300,6 +1352,7 @@ ssl_handshake(struct comm_point* c)
|
|||
c->repinfo.addrlen);
|
||||
}
|
||||
|
||||
#ifdef HAVE_SSL_GET0_ALPN_SELECTED
|
||||
/* check if http2 use is negotiated */
|
||||
if(c->type == comm_http && c->h2_session) {
|
||||
const unsigned char *alpn;
|
||||
|
@ -1311,13 +1364,14 @@ ssl_handshake(struct comm_point* c)
|
|||
c->use_h2 = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* setup listen rw correctly */
|
||||
if(c->tcp_is_reading) {
|
||||
if(c->ssl_shake_state != comm_ssl_shake_read)
|
||||
comm_point_listen_for_rw(c, 1, 0);
|
||||
} else {
|
||||
comm_point_listen_for_rw(c, 1, 1);
|
||||
comm_point_listen_for_rw(c, 0, 1);
|
||||
}
|
||||
c->ssl_shake_state = comm_ssl_shake_none;
|
||||
return 1;
|
||||
|
@ -1348,7 +1402,9 @@ ssl_handle_read(struct comm_point* c)
|
|||
return tcp_req_info_handle_read_close(c->tcp_req_info);
|
||||
return 0; /* shutdown, closed */
|
||||
} else if(want == SSL_ERROR_WANT_READ) {
|
||||
#ifdef USE_WINSOCK
|
||||
ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ);
|
||||
#endif
|
||||
return 1; /* read more later */
|
||||
} else if(want == SSL_ERROR_WANT_WRITE) {
|
||||
c->ssl_shake_state = comm_ssl_shake_hs_write;
|
||||
|
@ -1396,7 +1452,9 @@ ssl_handle_read(struct comm_point* c)
|
|||
return tcp_req_info_handle_read_close(c->tcp_req_info);
|
||||
return 0; /* shutdown, closed */
|
||||
} else if(want == SSL_ERROR_WANT_READ) {
|
||||
#ifdef USE_WINSOCK
|
||||
ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ);
|
||||
#endif
|
||||
return 1; /* read more later */
|
||||
} else if(want == SSL_ERROR_WANT_WRITE) {
|
||||
c->ssl_shake_state = comm_ssl_shake_hs_write;
|
||||
|
@ -1489,7 +1547,9 @@ ssl_handle_write(struct comm_point* c)
|
|||
comm_point_listen_for_rw(c, 1, 0);
|
||||
return 1; /* wait for read condition */
|
||||
} else if(want == SSL_ERROR_WANT_WRITE) {
|
||||
#ifdef USE_WINSOCK
|
||||
ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE);
|
||||
#endif
|
||||
return 1; /* write more later */
|
||||
} else if(want == SSL_ERROR_SYSCALL) {
|
||||
#ifdef EPIPE
|
||||
|
@ -1539,7 +1599,9 @@ ssl_handle_write(struct comm_point* c)
|
|||
comm_point_listen_for_rw(c, 1, 0);
|
||||
return 1; /* wait for read condition */
|
||||
} else if(want == SSL_ERROR_WANT_WRITE) {
|
||||
#ifdef USE_WINSOCK
|
||||
ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE);
|
||||
#endif
|
||||
return 1; /* write more later */
|
||||
} else if(want == SSL_ERROR_SYSCALL) {
|
||||
#ifdef EPIPE
|
||||
|
@ -1620,6 +1682,10 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok)
|
|||
if(errno == ECONNRESET && verbosity < 2)
|
||||
return 0; /* silence reset by peer */
|
||||
#endif
|
||||
#ifdef ECONNREFUSED
|
||||
if(errno == ECONNREFUSED && verbosity < 2)
|
||||
return 0; /* silence reset by peer */
|
||||
#endif
|
||||
#ifdef ENETUNREACH
|
||||
if(errno == ENETUNREACH && verbosity < 2)
|
||||
return 0; /* silence it */
|
||||
|
@ -1648,6 +1714,16 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok)
|
|||
}
|
||||
#endif
|
||||
#else /* USE_WINSOCK */
|
||||
if(WSAGetLastError() == WSAECONNREFUSED && verbosity < 2)
|
||||
return 0;
|
||||
if(WSAGetLastError() == WSAEHOSTDOWN && verbosity < 2)
|
||||
return 0;
|
||||
if(WSAGetLastError() == WSAEHOSTUNREACH && verbosity < 2)
|
||||
return 0;
|
||||
if(WSAGetLastError() == WSAENETDOWN && verbosity < 2)
|
||||
return 0;
|
||||
if(WSAGetLastError() == WSAENETUNREACH && verbosity < 2)
|
||||
return 0;
|
||||
if(WSAGetLastError() == WSAECONNRESET)
|
||||
return 0;
|
||||
if(WSAGetLastError() == WSAEINPROGRESS)
|
||||
|
@ -1681,7 +1757,8 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok)
|
|||
(int)sldns_buffer_limit(c->buffer));
|
||||
}
|
||||
|
||||
log_assert(sldns_buffer_remaining(c->buffer) > 0);
|
||||
if(sldns_buffer_remaining(c->buffer) == 0)
|
||||
log_err("in comm_point_tcp_handle_read buffer_remaining is not > 0 as expected, continuing with (harmless) 0 length recv");
|
||||
r = recv(fd, (void*)sldns_buffer_current(c->buffer),
|
||||
sldns_buffer_remaining(c->buffer), 0);
|
||||
if(r == 0) {
|
||||
|
@ -1815,13 +1892,22 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
|
|||
if(errno == EINTR || errno == EAGAIN)
|
||||
return 1;
|
||||
/* Not handling EISCONN here as shouldn't ever hit that case.*/
|
||||
if(errno != EPIPE && errno != 0 && verbosity < 2)
|
||||
return 0; /* silence lots of chatter in the logs */
|
||||
if(errno != EPIPE && errno != 0) {
|
||||
if(errno != EPIPE
|
||||
#ifdef EOPNOTSUPP
|
||||
/* if /proc/sys/net/ipv4/tcp_fastopen is
|
||||
* disabled on Linux, sendmsg may return
|
||||
* 'Operation not supported', if so
|
||||
* fallthrough to ordinary connect. */
|
||||
&& errno != EOPNOTSUPP
|
||||
#endif
|
||||
&& errno != 0) {
|
||||
if(verbosity < 2)
|
||||
return 0; /* silence lots of chatter in the logs */
|
||||
log_err_addr("tcp sendmsg", strerror(errno),
|
||||
&c->repinfo.addr, c->repinfo.addrlen);
|
||||
return 0;
|
||||
}
|
||||
verbose(VERB_ALGO, "tcp sendmsg for fastopen failed (with %s), try normal connect", strerror(errno));
|
||||
/* fallthrough to nonFASTOPEN
|
||||
* (MSG_FASTOPEN on Linux 3 produces EPIPE)
|
||||
* we need to perform connect() */
|
||||
|
@ -2154,9 +2240,11 @@ reclaim_http_handler(struct comm_point* c)
|
|||
}
|
||||
comm_point_close(c);
|
||||
if(c->tcp_parent) {
|
||||
c->tcp_parent->cur_tcp_count--;
|
||||
c->tcp_free = c->tcp_parent->tcp_free;
|
||||
c->tcp_parent->tcp_free = c;
|
||||
if(c != c->tcp_parent->tcp_free) {
|
||||
c->tcp_parent->cur_tcp_count--;
|
||||
c->tcp_free = c->tcp_parent->tcp_free;
|
||||
c->tcp_parent->tcp_free = c;
|
||||
}
|
||||
if(!c->tcp_free) {
|
||||
/* re-enable listening on accept socket */
|
||||
comm_point_start_listening(c->tcp_parent, -1, -1);
|
||||
|
@ -2197,6 +2285,8 @@ ssl_http_read_more(struct comm_point* c)
|
|||
log_crypto_err("could not SSL_read");
|
||||
return 0;
|
||||
}
|
||||
verbose(VERB_ALGO, "ssl http read more skip to %d + %d",
|
||||
(int)sldns_buffer_position(c->buffer), (int)r);
|
||||
sldns_buffer_skip(c->buffer, (ssize_t)r);
|
||||
return 1;
|
||||
#else
|
||||
|
@ -2233,6 +2323,8 @@ http_read_more(int fd, struct comm_point* c)
|
|||
&c->repinfo.addr, c->repinfo.addrlen);
|
||||
return 0;
|
||||
}
|
||||
verbose(VERB_ALGO, "http read more skip to %d + %d",
|
||||
(int)sldns_buffer_position(c->buffer), (int)r);
|
||||
sldns_buffer_skip(c->buffer, r);
|
||||
return 1;
|
||||
}
|
||||
|
@ -2370,7 +2462,7 @@ http_process_chunk_header(struct comm_point* c)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/** handle nonchunked data segment */
|
||||
/** handle nonchunked data segment, 0=fail, 1=wait */
|
||||
static int
|
||||
http_nonchunk_segment(struct comm_point* c)
|
||||
{
|
||||
|
@ -2379,7 +2471,7 @@ http_nonchunk_segment(struct comm_point* c)
|
|||
* we are looking to read tcp_byte_count more data
|
||||
* and then the transfer is done. */
|
||||
size_t remainbufferlen;
|
||||
size_t got_now = sldns_buffer_limit(c->buffer) - c->http_stored;
|
||||
size_t got_now = sldns_buffer_limit(c->buffer);
|
||||
if(c->tcp_byte_count <= got_now) {
|
||||
/* done, this is the last data fragment */
|
||||
c->http_stored = 0;
|
||||
|
@ -2388,13 +2480,12 @@ http_nonchunk_segment(struct comm_point* c)
|
|||
(void)(*c->callback)(c, c->cb_arg, NETEVENT_DONE, NULL);
|
||||
return 1;
|
||||
}
|
||||
c->tcp_byte_count -= got_now;
|
||||
/* if we have the buffer space,
|
||||
* read more data collected into the buffer */
|
||||
remainbufferlen = sldns_buffer_capacity(c->buffer) -
|
||||
sldns_buffer_limit(c->buffer);
|
||||
if(remainbufferlen >= c->tcp_byte_count ||
|
||||
remainbufferlen >= 2048) {
|
||||
if(remainbufferlen+got_now >= c->tcp_byte_count ||
|
||||
remainbufferlen >= (size_t)(c->ssl?16384:2048)) {
|
||||
size_t total = sldns_buffer_limit(c->buffer);
|
||||
sldns_buffer_clear(c->buffer);
|
||||
sldns_buffer_set_position(c->buffer, total);
|
||||
|
@ -2404,6 +2495,7 @@ http_nonchunk_segment(struct comm_point* c)
|
|||
}
|
||||
/* call callback with this data amount, then
|
||||
* wait for more */
|
||||
c->tcp_byte_count -= got_now;
|
||||
c->http_stored = 0;
|
||||
sldns_buffer_set_position(c->buffer, 0);
|
||||
fptr_ok(fptr_whitelist_comm_point(c->callback));
|
||||
|
@ -2762,6 +2854,11 @@ comm_point_http_handle_read(int fd, struct comm_point* c)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if(c->http_stored >= sldns_buffer_position(c->buffer)) {
|
||||
/* read did not work but we wanted more data, there is
|
||||
* no bytes to process now. */
|
||||
return 1;
|
||||
}
|
||||
sldns_buffer_flip(c->buffer);
|
||||
/* if we are partway in a segment of data, position us at the point
|
||||
* where we left off previously */
|
||||
|
@ -3184,7 +3281,7 @@ void comm_point_raw_handle_callback(int ATTR_UNUSED(fd),
|
|||
|
||||
struct comm_point*
|
||||
comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer,
|
||||
comm_point_callback_type* callback, void* callback_arg)
|
||||
comm_point_callback_type* callback, void* callback_arg, struct unbound_socket* socket)
|
||||
{
|
||||
struct comm_point* c = (struct comm_point*)calloc(1,
|
||||
sizeof(struct comm_point));
|
||||
|
@ -3223,6 +3320,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer,
|
|||
c->inuse = 0;
|
||||
c->callback = callback;
|
||||
c->cb_arg = callback_arg;
|
||||
c->socket = socket;
|
||||
evbits = UB_EV_READ | UB_EV_PERSIST;
|
||||
/* ub_event stuff */
|
||||
c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
|
||||
|
@ -3244,7 +3342,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer,
|
|||
struct comm_point*
|
||||
comm_point_create_udp_ancil(struct comm_base *base, int fd,
|
||||
sldns_buffer* buffer,
|
||||
comm_point_callback_type* callback, void* callback_arg)
|
||||
comm_point_callback_type* callback, void* callback_arg, struct unbound_socket* socket)
|
||||
{
|
||||
struct comm_point* c = (struct comm_point*)calloc(1,
|
||||
sizeof(struct comm_point));
|
||||
|
@ -3283,6 +3381,7 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd,
|
|||
#endif
|
||||
c->callback = callback;
|
||||
c->cb_arg = callback_arg;
|
||||
c->socket = socket;
|
||||
evbits = UB_EV_READ | UB_EV_PERSIST;
|
||||
/* ub_event stuff */
|
||||
c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
|
||||
|
@ -3305,7 +3404,7 @@ static struct comm_point*
|
|||
comm_point_create_tcp_handler(struct comm_base *base,
|
||||
struct comm_point* parent, size_t bufsize,
|
||||
struct sldns_buffer* spoolbuf, comm_point_callback_type* callback,
|
||||
void* callback_arg)
|
||||
void* callback_arg, struct unbound_socket* socket)
|
||||
{
|
||||
struct comm_point* c = (struct comm_point*)calloc(1,
|
||||
sizeof(struct comm_point));
|
||||
|
@ -3361,6 +3460,7 @@ comm_point_create_tcp_handler(struct comm_base *base,
|
|||
c->repinfo.c = c;
|
||||
c->callback = callback;
|
||||
c->cb_arg = callback_arg;
|
||||
c->socket = socket;
|
||||
if(spoolbuf) {
|
||||
c->tcp_req_info = tcp_req_info_create(spoolbuf);
|
||||
if(!c->tcp_req_info) {
|
||||
|
@ -3400,7 +3500,8 @@ static struct comm_point*
|
|||
comm_point_create_http_handler(struct comm_base *base,
|
||||
struct comm_point* parent, size_t bufsize, int harden_large_queries,
|
||||
uint32_t http_max_streams, char* http_endpoint,
|
||||
comm_point_callback_type* callback, void* callback_arg)
|
||||
comm_point_callback_type* callback, void* callback_arg,
|
||||
struct unbound_socket* socket)
|
||||
{
|
||||
struct comm_point* c = (struct comm_point*)calloc(1,
|
||||
sizeof(struct comm_point));
|
||||
|
@ -3454,6 +3555,7 @@ comm_point_create_http_handler(struct comm_base *base,
|
|||
c->repinfo.c = c;
|
||||
c->callback = callback;
|
||||
c->cb_arg = callback_arg;
|
||||
c->socket = socket;
|
||||
|
||||
c->http_min_version = http_version_2;
|
||||
c->http2_stream_max_qbuffer_size = bufsize;
|
||||
|
@ -3518,7 +3620,7 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num,
|
|||
uint32_t http_max_streams, char* http_endpoint,
|
||||
struct tcl_list* tcp_conn_limit, size_t bufsize,
|
||||
struct sldns_buffer* spoolbuf, enum listen_type port_type,
|
||||
comm_point_callback_type* callback, void* callback_arg)
|
||||
comm_point_callback_type* callback, void* callback_arg, struct unbound_socket* socket)
|
||||
{
|
||||
struct comm_point* c = (struct comm_point*)calloc(1,
|
||||
sizeof(struct comm_point));
|
||||
|
@ -3568,6 +3670,7 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num,
|
|||
#endif
|
||||
c->callback = NULL;
|
||||
c->cb_arg = NULL;
|
||||
c->socket = socket;
|
||||
evbits = UB_EV_READ | UB_EV_PERSIST;
|
||||
/* ub_event stuff */
|
||||
c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
|
||||
|
@ -3589,12 +3692,12 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num,
|
|||
port_type == listen_type_ssl ||
|
||||
port_type == listen_type_tcp_dnscrypt) {
|
||||
c->tcp_handlers[i] = comm_point_create_tcp_handler(base,
|
||||
c, bufsize, spoolbuf, callback, callback_arg);
|
||||
c, bufsize, spoolbuf, callback, callback_arg, socket);
|
||||
} else if(port_type == listen_type_http) {
|
||||
c->tcp_handlers[i] = comm_point_create_http_handler(
|
||||
base, c, bufsize, harden_large_queries,
|
||||
http_max_streams, http_endpoint,
|
||||
callback, callback_arg);
|
||||
callback, callback_arg, socket);
|
||||
}
|
||||
else {
|
||||
log_err("could not create tcp handler, unknown listen "
|
||||
|
@ -3895,11 +3998,13 @@ comm_point_close(struct comm_point* c)
|
|||
|
||||
/* close fd after removing from event lists, or epoll.. is messed up */
|
||||
if(c->fd != -1 && !c->do_not_close) {
|
||||
#ifdef USE_WINSOCK
|
||||
if(c->type == comm_tcp || c->type == comm_http) {
|
||||
/* delete sticky events for the fd, it gets closed */
|
||||
ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ);
|
||||
ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE);
|
||||
}
|
||||
#endif
|
||||
verbose(VERB_ALGO, "close fd %d", c->fd);
|
||||
sock_close(c->fd);
|
||||
}
|
||||
|
@ -3970,20 +4075,26 @@ comm_point_send_reply(struct comm_reply *repinfo)
|
|||
comm_point_send_udp_msg(repinfo->c, buffer,
|
||||
(struct sockaddr*)&repinfo->addr, repinfo->addrlen, 0);
|
||||
#ifdef USE_DNSTAP
|
||||
if(repinfo->c->dtenv != NULL &&
|
||||
repinfo->c->dtenv->log_client_response_messages)
|
||||
dt_msg_send_client_response(repinfo->c->dtenv,
|
||||
&repinfo->addr, repinfo->c->type, repinfo->c->buffer);
|
||||
/*
|
||||
* sending src (client)/dst (local service) addresses over DNSTAP from udp callback
|
||||
*/
|
||||
if(repinfo->c->dtenv != NULL && repinfo->c->dtenv->log_client_response_messages) {
|
||||
log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->socket->addr->ai_addrlen);
|
||||
log_addr(VERB_ALGO, "response to client", &repinfo->addr, repinfo->addrlen);
|
||||
dt_msg_send_client_response(repinfo->c->dtenv, &repinfo->addr, (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->type, repinfo->c->buffer);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
#ifdef USE_DNSTAP
|
||||
if(repinfo->c->tcp_parent->dtenv != NULL &&
|
||||
repinfo->c->tcp_parent->dtenv->log_client_response_messages)
|
||||
dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv,
|
||||
&repinfo->addr, repinfo->c->type,
|
||||
( repinfo->c->tcp_req_info
|
||||
? repinfo->c->tcp_req_info->spool_buffer
|
||||
: repinfo->c->buffer ));
|
||||
/*
|
||||
* sending src (client)/dst (local service) addresses over DNSTAP from TCP callback
|
||||
*/
|
||||
if(repinfo->c->tcp_parent->dtenv != NULL && repinfo->c->tcp_parent->dtenv->log_client_response_messages) {
|
||||
log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->socket->addr->ai_addrlen);
|
||||
log_addr(VERB_ALGO, "response to client", &repinfo->addr, repinfo->addrlen);
|
||||
dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv, &repinfo->addr, (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->type,
|
||||
( repinfo->c->tcp_req_info? repinfo->c->tcp_req_info->spool_buffer: repinfo->c->buffer ));
|
||||
}
|
||||
#endif
|
||||
if(repinfo->c->tcp_req_info) {
|
||||
tcp_req_info_send_reply(repinfo->c->tcp_req_info);
|
||||
|
@ -4070,6 +4181,10 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec)
|
|||
c->timeout->tv_sec = msec/1000;
|
||||
c->timeout->tv_usec = (msec%1000)*1000;
|
||||
#endif /* S_SPLINT_S */
|
||||
} else {
|
||||
if(msec == 0 || !c->timeout) {
|
||||
ub_event_del_bits(c->ev->ev, UB_EV_TIMEOUT);
|
||||
}
|
||||
}
|
||||
if(c->type == comm_tcp || c->type == comm_http) {
|
||||
ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE);
|
||||
|
@ -4094,6 +4209,7 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec)
|
|||
}
|
||||
if(ub_event_add(c->ev->ev, msec==0?NULL:c->timeout) != 0) {
|
||||
log_err("event_add failed. in cpsl.");
|
||||
return;
|
||||
}
|
||||
c->event_added = 1;
|
||||
}
|
||||
|
@ -4107,11 +4223,15 @@ void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr)
|
|||
}
|
||||
c->event_added = 0;
|
||||
}
|
||||
if(!c->timeout) {
|
||||
ub_event_del_bits(c->ev->ev, UB_EV_TIMEOUT);
|
||||
}
|
||||
ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE);
|
||||
if(rd) ub_event_add_bits(c->ev->ev, UB_EV_READ);
|
||||
if(wr) ub_event_add_bits(c->ev->ev, UB_EV_WRITE);
|
||||
if(ub_event_add(c->ev->ev, c->timeout) != 0) {
|
||||
log_err("event_add failed. in cplf.");
|
||||
return;
|
||||
}
|
||||
c->event_added = 1;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#define CONFCMDLINE ""
|
||||
|
||||
/* Pathname to the Unbound configuration file */
|
||||
#define CONFIGFILE "/etc/unbound/unbound.conf"
|
||||
#define CONFIGFILE CHROOT_DIR "/etc/unbound/unbound.conf"
|
||||
|
||||
/* Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work
|
||||
*/
|
||||
|
@ -29,6 +29,9 @@
|
|||
/* Whether daemon is deprecated */
|
||||
/* #undef DEPRECATED_DAEMON */
|
||||
|
||||
/* Deprecate RSA 1024 bit length, makes that an unsupported key */
|
||||
/* #undef DEPRECATE_RSA_1024 */
|
||||
|
||||
/* Define this to enable kernel based UDP source port randomization. */
|
||||
/* #undef DISABLE_EXPLICIT_PORT_RANDOMISATION */
|
||||
|
||||
|
@ -70,6 +73,9 @@
|
|||
/* If we have be64toh */
|
||||
#define HAVE_BE64TOH 1
|
||||
|
||||
/* Define to 1 if you have the `BIO_set_callback_ex' function. */
|
||||
#define HAVE_BIO_SET_CALLBACK_EX 1
|
||||
|
||||
/* Define to 1 if you have the <bsd/stdlib.h> header file. */
|
||||
/* #undef HAVE_BSD_STDLIB_H */
|
||||
|
||||
|
@ -217,6 +223,10 @@
|
|||
/* Define to 1 if you have the `EVP_cleanup' function. */
|
||||
/* #undef HAVE_EVP_CLEANUP */
|
||||
|
||||
/* Define to 1 if you have the `EVP_default_properties_is_fips_enabled'
|
||||
function. */
|
||||
/* #undef HAVE_EVP_DEFAULT_PROPERTIES_IS_FIPS_ENABLED */
|
||||
|
||||
/* Define to 1 if you have the `EVP_DigestVerify' function. */
|
||||
#define HAVE_EVP_DIGESTVERIFY 1
|
||||
|
||||
|
@ -313,6 +323,9 @@
|
|||
/* Define to 1 if you have the <ifaddrs.h> header file. */
|
||||
#define HAVE_IFADDRS_H 1
|
||||
|
||||
/* Define to 1 if you have the `if_nametoindex' function. */
|
||||
#define HAVE_IF_NAMETOINDEX 1
|
||||
|
||||
/* Define to 1 if you have the `inet_aton' function. */
|
||||
#define HAVE_INET_ATON 1
|
||||
|
||||
|
@ -373,6 +386,9 @@
|
|||
/* Define to 1 if you have the <netinet/tcp.h> header file. */
|
||||
#define HAVE_NETINET_TCP_H 1
|
||||
|
||||
/* Define to 1 if you have the <netioapi.h> header file. */
|
||||
/* #undef HAVE_NETIOAPI_H */
|
||||
|
||||
/* Use libnettle for crypto */
|
||||
/* #undef HAVE_NETTLE */
|
||||
|
||||
|
@ -427,6 +443,9 @@
|
|||
/* Define to 1 if you have the `OPENSSL_init_ssl' function. */
|
||||
#define HAVE_OPENSSL_INIT_SSL 1
|
||||
|
||||
/* Define to 1 if you have the <openssl/param_build.h> header file. */
|
||||
/* #undef HAVE_OPENSSL_PARAM_BUILD_H */
|
||||
|
||||
/* Define to 1 if you have the <openssl/rand.h> header file. */
|
||||
#define HAVE_OPENSSL_RAND_H 1
|
||||
|
||||
|
@ -436,6 +455,9 @@
|
|||
/* Define to 1 if you have the <openssl/ssl.h> header file. */
|
||||
#define HAVE_OPENSSL_SSL_H 1
|
||||
|
||||
/* Define to 1 if you have the `OSSL_PARAM_BLD_new' function. */
|
||||
/* #undef HAVE_OSSL_PARAM_BLD_NEW */
|
||||
|
||||
/* Define if you have POSIX threads libraries and header files. */
|
||||
#define HAVE_PTHREAD 1
|
||||
|
||||
|
@ -517,6 +539,9 @@
|
|||
/* Define if you have the SSL libraries installed. */
|
||||
#define HAVE_SSL /**/
|
||||
|
||||
/* Define to 1 if you have the `SSL_CTX_set_alpn_protos' function. */
|
||||
#define HAVE_SSL_CTX_SET_ALPN_PROTOS 1
|
||||
|
||||
/* Define to 1 if you have the `SSL_CTX_set_alpn_select_cb' function. */
|
||||
#define HAVE_SSL_CTX_SET_ALPN_SELECT_CB 1
|
||||
|
||||
|
@ -530,9 +555,15 @@
|
|||
function. */
|
||||
/* #undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB */
|
||||
|
||||
/* Define to 1 if you have the `SSL_get0_alpn_selected' function. */
|
||||
#define HAVE_SSL_GET0_ALPN_SELECTED 1
|
||||
|
||||
/* Define to 1 if you have the `SSL_get0_peername' function. */
|
||||
#define HAVE_SSL_GET0_PEERNAME 1
|
||||
|
||||
/* Define to 1 if you have the `SSL_get1_peer_certificate' function. */
|
||||
/* #undef HAVE_SSL_GET1_PEER_CERTIFICATE */
|
||||
|
||||
/* Define to 1 if you have the `SSL_set1_host' function. */
|
||||
#define HAVE_SSL_SET1_HOST 1
|
||||
|
||||
|
@ -730,7 +761,7 @@
|
|||
#define PACKAGE_NAME "unbound"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "unbound 1.13.1"
|
||||
#define PACKAGE_STRING "unbound 1.16.3"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "unbound"
|
||||
|
@ -739,10 +770,10 @@
|
|||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.13.1"
|
||||
#define PACKAGE_VERSION "1.16.3"
|
||||
|
||||
/* default pidfile location */
|
||||
#define PIDFILE "/var/run/unbound.pid"
|
||||
#define PIDFILE CHROOT_DIR "/var/run/unbound.pid"
|
||||
|
||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||
your system. */
|
||||
|
@ -756,19 +787,19 @@
|
|||
#define REUSEPORT_DEFAULT 0
|
||||
|
||||
/* default rootkey location */
|
||||
#define ROOT_ANCHOR_FILE "/etc/unbound/root.key"
|
||||
#define ROOT_ANCHOR_FILE CHROOT_DIR "/etc/unbound/root.key"
|
||||
|
||||
/* default rootcert location */
|
||||
#define ROOT_CERT_FILE "/etc/unbound/icannbundle.pem"
|
||||
#define ROOT_CERT_FILE CHROOT_DIR "/etc/unbound/icannbundle.pem"
|
||||
|
||||
/* version number for resource files */
|
||||
#define RSRC_PACKAGE_VERSION 1,13,1,0
|
||||
#define RSRC_PACKAGE_VERSION 1,16,3,0
|
||||
|
||||
/* Directory to chdir to */
|
||||
#define RUN_DIR "/etc/unbound"
|
||||
#define RUN_DIR CHROOT_DIR "/etc/unbound"
|
||||
|
||||
/* Shared data */
|
||||
#define SHARE_DIR "/etc/unbound"
|
||||
#define SHARE_DIR CHROOT_DIR "/etc/unbound"
|
||||
|
||||
/* The size of `size_t', as computed by sizeof. */
|
||||
#define SIZEOF_SIZE_T 8
|
||||
|
@ -934,6 +965,10 @@
|
|||
this defined. */
|
||||
/* #undef _POSIX_1_SOURCE */
|
||||
|
||||
/* defined to use gcc ansi snprintf and sscanf that understands %lld when
|
||||
compiled for windows. */
|
||||
/* #undef __USE_MINGW_ANSI_STDIO */
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
/* #undef _POSIX_SOURCE */
|
||||
|
||||
|
@ -1116,7 +1151,7 @@
|
|||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#ifndef USE_WINSOCK
|
||||
#if !defined(USE_WINSOCK) || !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) || defined(__USE_MINGW_ANSI_STDIO)
|
||||
#define ARG_LL "%ll"
|
||||
#else
|
||||
#define ARG_LL "%I64"
|
||||
|
|
Loading…
Reference in New Issue