Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e38c8b9aee | ||
|
|
c16fcbf9a4 | ||
|
|
2a33835a96 | ||
|
|
446b58f36b | ||
|
|
fb73a88f78 | ||
|
|
b40b6c3970 | ||
|
|
1e358dbc98 |
+17
-12
@@ -4,7 +4,6 @@ variables:
|
||||
DOCKER_DRIVER: overlay2
|
||||
CI_REGISTRY_IMAGE: registry.gitlab.isc.org/isc-projects/images/bind9
|
||||
CCACHE_DIR: "/ccache"
|
||||
SOFTHSM2_CONF: "/var/tmp/softhsm2/softhsm2.conf"
|
||||
|
||||
stages:
|
||||
- precheck
|
||||
@@ -126,7 +125,9 @@ stages:
|
||||
before_script:
|
||||
- rm -rf .ccache
|
||||
- bash -x bin/tests/system/ifconfig.sh up
|
||||
- bash -x util/prepare-softhsm2.sh
|
||||
- export SOFTHSM_CONF="/tmp/softhsm.conf"
|
||||
- echo "0:/tmp/softhsm.db" > $SOFTHSM_CONF
|
||||
- if command -v softhsm2-util >/dev/null; then softhsm2-util --init-token --free --pin 0000 --so-pin 0000 --label "softhsm"; fi
|
||||
script:
|
||||
- ( cd bin/tests && make -j${TEST_PARALLEL_JOBS:-1} -k test V=1 )
|
||||
- test -s bin/tests/system/systests.output
|
||||
@@ -139,7 +140,9 @@ stages:
|
||||
stage: test
|
||||
before_script:
|
||||
- export KYUA_RESULT="$CI_PROJECT_DIR/kyua.results"
|
||||
- bash -x util/prepare-softhsm2.sh
|
||||
- export SOFTHSM_CONF="/tmp/softhsm.conf"
|
||||
- echo "0:/tmp/softhsm.db" > $SOFTHSM_CONF
|
||||
- if command -v softhsm2-util >/dev/null; then softhsm2-util --init-token --free --pin 0000 --so-pin 0000 --label "softhsm"; fi
|
||||
script:
|
||||
- make unit
|
||||
after_script:
|
||||
@@ -211,11 +214,12 @@ build:centos:centos7:amd64:
|
||||
<<: *centos_centos7_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
build:clang:debian:stretch:amd64:
|
||||
build:clang:debian:sid:amd64:
|
||||
variables:
|
||||
CC: clang
|
||||
CC: clang-6.0
|
||||
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
||||
<<: *debian_stretch_amd64_image
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
build:debian:jessie:amd64:
|
||||
@@ -240,11 +244,12 @@ build:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *build_job
|
||||
|
||||
build:clang:debian:stretch:i386:
|
||||
build:clang:debian:sid:i386:
|
||||
variables:
|
||||
CC: clang
|
||||
CC: clang-6.0
|
||||
CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g"
|
||||
<<: *debian_stretch_i386_image
|
||||
EXTRA_CONFIGURE: "--with-libidn2"
|
||||
<<: *debian_sid_i386_image
|
||||
<<: *build_job
|
||||
|
||||
build:debian:sid:i386:
|
||||
@@ -285,11 +290,11 @@ unittest:debian:sid:amd64:
|
||||
dependencies:
|
||||
- build:debian:sid:amd64
|
||||
|
||||
unittest:clang:debian:stretch:amd64:
|
||||
<<: *debian_stretch_amd64_image
|
||||
unittest:clang:debian:sid:amd64:
|
||||
<<: *debian_sid_amd64_image
|
||||
<<: *unit_test_job
|
||||
dependencies:
|
||||
- build:clang:debian:stretch:amd64
|
||||
- build:clang:debian:sid:amd64
|
||||
|
||||
unittest:debian:sid:i386:
|
||||
<<: *debian_sid_i386_image
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
5009. [bug] Upon an OpenSSL failure, the first error in the OpenSSL
|
||||
error queue was not logged. [GL #476]
|
||||
|
||||
5008. [bug] "rndc signing -nsec3param ..." requests were silently
|
||||
ignored for zones which were not yet loaded or
|
||||
transferred. [GL #468]
|
||||
|
||||
5007. [cleanup] Replace custom ISC boolean and integer data types
|
||||
with C99 stdint.h and stdbool.h types. [GL #9]
|
||||
|
||||
|
||||
Vendored
+10
-11
@@ -1,6 +1,6 @@
|
||||
# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -12,9 +12,9 @@
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
# serial 12 (pkg-config-0.29.2)
|
||||
|
||||
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
dnl serial 11 (pkg-config-0.29.1)
|
||||
dnl
|
||||
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||
dnl
|
||||
@@ -55,7 +55,7 @@ dnl
|
||||
dnl See the "Since" comment for each macro you use to see what version
|
||||
dnl of the macros you require.
|
||||
m4_defun([PKG_PREREQ],
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.2])
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.1])
|
||||
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||
])dnl PKG_PREREQ
|
||||
@@ -156,7 +156,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||
|
||||
pkg_failed=no
|
||||
AC_MSG_CHECKING([for $2])
|
||||
AC_MSG_CHECKING([for $1])
|
||||
|
||||
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||
@@ -166,11 +166,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
|
||||
See the pkg-config man page for more details.])
|
||||
|
||||
if test $pkg_failed = yes; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_RESULT([no])
|
||||
_PKG_SHORT_ERRORS_SUPPORTED
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||
else
|
||||
else
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
@@ -187,7 +187,7 @@ installed software in a non-standard prefix.
|
||||
_PKG_TEXT])[]dnl
|
||||
])
|
||||
elif test $pkg_failed = untried; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_RESULT([no])
|
||||
m4_default([$4], [AC_MSG_FAILURE(
|
||||
[The pkg-config script could not be found or is too old. Make sure it
|
||||
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||
@@ -289,7 +289,6 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||
])dnl PKG_CHECK_VAR
|
||||
|
||||
m4_include([m4/ax_check_openssl.m4])
|
||||
m4_include([m4/ax_pthread.m4])
|
||||
m4_include([m4/libtool.m4])
|
||||
m4_include([m4/ltoptions.m4])
|
||||
m4_include([m4/ltsugar.m4])
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -99,7 +99,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>cd ..\..\..\Build\$(Configuration)
|
||||
@@ -105,7 +105,7 @@ copy /Y named-checkzone.ilk named-compilezone.ilk
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>checktool.lib;libisc.lib;libdns.lib;libisccfg.lib;libbind9.lib;libns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>cd ..\..\..\Build\$(Configuration)
|
||||
@@ -106,7 +106,7 @@ copy /Y ddns-confgen.ilk tsig-keygen.ilk
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>cd ..\..\..\Build\$(Configuration)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>confgentool.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dighost.lib;libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;@IDN_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dighost.lib;@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIBD@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@READLINE_LIBD@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIB@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@READLINE_LIB@@IDN_LIB@libisc.lib;libisccfg.lib;libirs.lib;libdns.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
@IF PYTHON
|
||||
<PostBuildEvent>
|
||||
@@ -113,7 +113,7 @@ set PYTHONPATH=.
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
@IF PYTHON
|
||||
<PostBuildEvent>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -99,7 +99,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -99,7 +99,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -99,7 +99,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>dnssectool.lib;libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
+5
-9
@@ -773,7 +773,7 @@ create_managers(void) {
|
||||
INSIST(named_g_cpus_detected > 0);
|
||||
|
||||
if (named_g_cpus == 0)
|
||||
named_g_cpus = named_g_cpus_detected;
|
||||
named_g_cpus = named_g_cpus_detected * 1.5;
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_SERVER, ISC_LOG_INFO,
|
||||
"found %u CPU%s, using %u worker thread%s",
|
||||
@@ -787,7 +787,7 @@ create_managers(void) {
|
||||
if (named_g_cpus_detected == 1)
|
||||
named_g_udpdisp = 1;
|
||||
else
|
||||
named_g_udpdisp = named_g_cpus_detected - 1;
|
||||
named_g_udpdisp = named_g_cpus_detected;
|
||||
}
|
||||
if (named_g_udpdisp > named_g_cpus)
|
||||
named_g_udpdisp = named_g_cpus;
|
||||
@@ -822,7 +822,7 @@ create_managers(void) {
|
||||
isc_result_totext(result));
|
||||
return (ISC_R_UNEXPECTED);
|
||||
}
|
||||
isc__socketmgr_maxudp(named_g_socketmgr, maxudp);
|
||||
isc_socketmgr_maxudp(named_g_socketmgr, maxudp);
|
||||
result = isc_socketmgr_getmaxsockets(named_g_socketmgr, &socks);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
@@ -994,6 +994,7 @@ setup(void) {
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
"compiled by Solaris Studio %x", __SUNPRO_C);
|
||||
#endif
|
||||
#ifdef OPENSSL
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
"compiled with OpenSSL version: %s",
|
||||
@@ -1010,6 +1011,7 @@ setup(void) {
|
||||
"linked to OpenSSL version: %s",
|
||||
SSLeay_version(SSLEAY_VERSION));
|
||||
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
|
||||
#endif
|
||||
#ifdef HAVE_LIBXML2
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
@@ -1035,15 +1037,9 @@ setup(void) {
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
"linked to zlib version: %s", zlibVersion());
|
||||
#endif
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
"threads support is enabled");
|
||||
#else
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
"threads support is disabled");
|
||||
#endif
|
||||
|
||||
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
|
||||
NAMED_LOGMODULE_MAIN, ISC_LOG_NOTICE,
|
||||
|
||||
+1
-1
@@ -8000,7 +8000,7 @@ load_configuration(const char *filename, named_server_t *server,
|
||||
"less than 128 UDP sockets available after "
|
||||
"applying 'reserved-sockets' and 'maxsockets'");
|
||||
}
|
||||
isc__socketmgr_setreserved(named_g_socketmgr, reserved);
|
||||
isc_socketmgr_setreserved(named_g_socketmgr, reserved);
|
||||
|
||||
#ifdef HAVE_GEOIP
|
||||
/*
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\ns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@GEOIP_LIB@libisc.lib;libdns.lib;libisccc.lib;libisccfg.lib;libbind9.lib;libns.lib;version.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIBD@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@READLINE_LIBD@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@READLINE_LIB@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@READLINE_LIB@@GSSAPI_LIB@@KRB5_LIB@libisc.lib;libdns.lib;libbind9.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@util.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>util.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>$(Configuration);..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\isccfg\win32\$(Configuration);..\..\..\lib\isccc\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@util.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>util.lib;libisc.lib;libdns.lib;libisccfg.lib;libisccc.lib;libbind9.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -18,3 +18,110 @@ $TTL 300 ; 5 minutes
|
||||
NS ns3
|
||||
ns2 A 10.53.0.2
|
||||
ns3 A 10.53.0.3
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
d A 10.0.0.4
|
||||
|
||||
; Used for testing ANY queries
|
||||
foo TXT "testing"
|
||||
foo A 10.0.1.0
|
||||
|
||||
bad-cname CNAME a
|
||||
bad-dname DNAME @
|
||||
|
||||
; Used for testing CNAME queries
|
||||
cname1 CNAME cname1-target
|
||||
cname1-target TXT "testing cname"
|
||||
|
||||
cname2 CNAME cname2-target
|
||||
cname2-target TXT "testing cname"
|
||||
|
||||
; Used for testing DNAME queries
|
||||
dname1 DNAME dname1-target
|
||||
foo.dname1-target TXT "testing dname"
|
||||
|
||||
dname2 DNAME dname2-target
|
||||
foo.dname2-target TXT "testing dname"
|
||||
|
||||
; A secure subdomain
|
||||
secure NS ns.secure
|
||||
ns.secure A 10.53.0.3
|
||||
|
||||
; An insecure subdomain
|
||||
insecure NS ns.insecure
|
||||
ns.insecure A 10.53.0.3
|
||||
|
||||
; A secure subdomain we're going to inject bogus data into
|
||||
bogus NS ns.bogus
|
||||
ns.bogus A 10.53.0.3
|
||||
|
||||
; A dynamic secure subdomain
|
||||
dynamic NS dynamic
|
||||
dynamic A 10.53.0.3
|
||||
|
||||
; A insecure subdomain
|
||||
mustbesecure NS ns.mustbesecure
|
||||
ns.mustbesecure A 10.53.0.3
|
||||
|
||||
; A rfc2535 signed zone w/ CNAME
|
||||
rfc2535 NS ns.rfc2535
|
||||
ns.rfc2535 A 10.53.0.3
|
||||
|
||||
z A 10.0.0.26
|
||||
|
||||
keyless NS ns.keyless
|
||||
ns.keyless A 10.53.0.3
|
||||
|
||||
nsec3 NS ns.nsec3
|
||||
ns.nsec3 A 10.53.0.3
|
||||
|
||||
optout NS ns.optout
|
||||
ns.optout A 10.53.0.3
|
||||
|
||||
nsec3-unknown NS ns.nsec3-unknown
|
||||
ns.nsec3-unknown A 10.53.0.3
|
||||
|
||||
optout-unknown NS ns.optout-unknown
|
||||
ns.optout-unknown A 10.53.0.3
|
||||
|
||||
multiple NS ns.multiple
|
||||
ns.multiple A 10.53.0.3
|
||||
|
||||
*.wild A 10.0.0.27
|
||||
|
||||
rsasha256 NS ns.rsasha256
|
||||
ns.rsasha256 A 10.53.0.3
|
||||
|
||||
rsasha512 NS ns.rsasha512
|
||||
ns.rsasha512 A 10.53.0.3
|
||||
|
||||
kskonly NS ns.kskonly
|
||||
ns.kskonly A 10.53.0.3
|
||||
|
||||
update-nsec3 NS ns.update-nsec3
|
||||
ns.update-nsec3 A 10.53.0.3
|
||||
|
||||
auto-nsec NS ns.auto-nsec
|
||||
ns.auto-nsec A 10.53.0.3
|
||||
|
||||
auto-nsec3 NS ns.auto-nsec3
|
||||
ns.auto-nsec3 A 10.53.0.3
|
||||
|
||||
|
||||
below-cname CNAME some.where.else.
|
||||
|
||||
insecure.below-cname NS ns.insecure.below-cname
|
||||
ns.insecure.below-cname A 10.53.0.3
|
||||
|
||||
secure.below-cname NS ns.secure.below-cname
|
||||
ns.secure.below-cname A 10.53.0.3
|
||||
|
||||
ttlpatch NS ns.ttlpatch
|
||||
ns.ttlpatch A 10.53.0.3
|
||||
|
||||
split-dnssec NS ns.split-dnssec
|
||||
ns.split-dnssec A 10.53.0.3
|
||||
|
||||
split-smart NS ns.split-smart
|
||||
ns.split-smart A 10.53.0.3
|
||||
|
||||
@@ -48,7 +48,6 @@ zone "retransfer3" {
|
||||
type master;
|
||||
file "retransfer3.db";
|
||||
allow-update { any; };
|
||||
allow-transfer { none; }; // changed dynamically by tests.sh
|
||||
notify no;
|
||||
};
|
||||
|
||||
|
||||
@@ -16,4 +16,112 @@ $TTL 300 ; 5 minutes
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
NS ns3
|
||||
ns2 A 10.53.0.2
|
||||
ns3 A 10.53.0.3
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
d A 10.0.0.4
|
||||
|
||||
; Used for testing ANY queries
|
||||
foo TXT "testing"
|
||||
foo A 10.0.1.0
|
||||
|
||||
bad-cname CNAME a
|
||||
bad-dname DNAME @
|
||||
|
||||
; Used for testing CNAME queries
|
||||
cname1 CNAME cname1-target
|
||||
cname1-target TXT "testing cname"
|
||||
|
||||
cname2 CNAME cname2-target
|
||||
cname2-target TXT "testing cname"
|
||||
|
||||
; Used for testing DNAME queries
|
||||
dname1 DNAME dname1-target
|
||||
foo.dname1-target TXT "testing dname"
|
||||
|
||||
dname2 DNAME dname2-target
|
||||
foo.dname2-target TXT "testing dname"
|
||||
|
||||
; A secure subdomain
|
||||
secure NS ns.secure
|
||||
ns.secure A 10.53.0.3
|
||||
|
||||
; An insecure subdomain
|
||||
insecure NS ns.insecure
|
||||
ns.insecure A 10.53.0.3
|
||||
|
||||
; A secure subdomain we're going to inject bogus data into
|
||||
bogus NS ns.bogus
|
||||
ns.bogus A 10.53.0.3
|
||||
|
||||
; A dynamic secure subdomain
|
||||
dynamic NS dynamic
|
||||
dynamic A 10.53.0.3
|
||||
|
||||
; A insecure subdomain
|
||||
mustbesecure NS ns.mustbesecure
|
||||
ns.mustbesecure A 10.53.0.3
|
||||
|
||||
; A rfc2535 signed zone w/ CNAME
|
||||
rfc2535 NS ns.rfc2535
|
||||
ns.rfc2535 A 10.53.0.3
|
||||
|
||||
z A 10.0.0.26
|
||||
|
||||
keyless NS ns.keyless
|
||||
ns.keyless A 10.53.0.3
|
||||
|
||||
nsec3 NS ns.nsec3
|
||||
ns.nsec3 A 10.53.0.3
|
||||
|
||||
optout NS ns.optout
|
||||
ns.optout A 10.53.0.3
|
||||
|
||||
nsec3-unknown NS ns.nsec3-unknown
|
||||
ns.nsec3-unknown A 10.53.0.3
|
||||
|
||||
optout-unknown NS ns.optout-unknown
|
||||
ns.optout-unknown A 10.53.0.3
|
||||
|
||||
multiple NS ns.multiple
|
||||
ns.multiple A 10.53.0.3
|
||||
|
||||
*.wild A 10.0.0.27
|
||||
|
||||
rsasha256 NS ns.rsasha256
|
||||
ns.rsasha256 A 10.53.0.3
|
||||
|
||||
rsasha512 NS ns.rsasha512
|
||||
ns.rsasha512 A 10.53.0.3
|
||||
|
||||
kskonly NS ns.kskonly
|
||||
ns.kskonly A 10.53.0.3
|
||||
|
||||
update-nsec3 NS ns.update-nsec3
|
||||
ns.update-nsec3 A 10.53.0.3
|
||||
|
||||
auto-nsec NS ns.auto-nsec
|
||||
ns.auto-nsec A 10.53.0.3
|
||||
|
||||
auto-nsec3 NS ns.auto-nsec3
|
||||
ns.auto-nsec3 A 10.53.0.3
|
||||
|
||||
|
||||
below-cname CNAME some.where.else.
|
||||
|
||||
insecure.below-cname NS ns.insecure.below-cname
|
||||
ns.insecure.below-cname A 10.53.0.3
|
||||
|
||||
secure.below-cname NS ns.secure.below-cname
|
||||
ns.secure.below-cname A 10.53.0.3
|
||||
|
||||
ttlpatch NS ns.ttlpatch
|
||||
ns.ttlpatch A 10.53.0.3
|
||||
|
||||
split-dnssec NS ns.split-dnssec
|
||||
ns.split-dnssec A 10.53.0.3
|
||||
|
||||
split-smart NS ns.split-smart
|
||||
ns.split-smart A 10.53.0.3
|
||||
|
||||
@@ -16,6 +16,113 @@ $TTL 300 ; 5 minutes
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
NS ns3
|
||||
ns2 A 10.53.0.2
|
||||
ns3 A 10.53.0.3
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
d A 10.0.0.4
|
||||
e A 10.0.0.5
|
||||
|
||||
; Used for testing ANY queries
|
||||
foo TXT "testing"
|
||||
foo A 10.0.1.0
|
||||
|
||||
bad-cname CNAME a
|
||||
bad-dname DNAME @
|
||||
|
||||
; Used for testing CNAME queries
|
||||
cname1 CNAME cname1-target
|
||||
cname1-target TXT "testing cname"
|
||||
|
||||
cname2 CNAME cname2-target
|
||||
cname2-target TXT "testing cname"
|
||||
|
||||
; Used for testing DNAME queries
|
||||
dname1 DNAME dname1-target
|
||||
foo.dname1-target TXT "testing dname"
|
||||
|
||||
dname2 DNAME dname2-target
|
||||
foo.dname2-target TXT "testing dname"
|
||||
|
||||
; A secure subdomain
|
||||
secure NS ns.secure
|
||||
ns.secure A 10.53.0.3
|
||||
|
||||
; An insecure subdomain
|
||||
insecure NS ns.insecure
|
||||
ns.insecure A 10.53.0.3
|
||||
|
||||
; A secure subdomain we're going to inject bogus data into
|
||||
bogus NS ns.bogus
|
||||
ns.bogus A 10.53.0.3
|
||||
|
||||
; A dynamic secure subdomain
|
||||
dynamic NS dynamic
|
||||
dynamic A 10.53.0.3
|
||||
|
||||
; A insecure subdomain
|
||||
mustbesecure NS ns.mustbesecure
|
||||
ns.mustbesecure A 10.53.0.3
|
||||
|
||||
; A rfc2535 signed zone w/ CNAME
|
||||
rfc2535 NS ns.rfc2535
|
||||
ns.rfc2535 A 10.53.0.3
|
||||
|
||||
z A 10.0.0.26
|
||||
|
||||
keyless NS ns.keyless
|
||||
ns.keyless A 10.53.0.3
|
||||
|
||||
nsec3 NS ns.nsec3
|
||||
ns.nsec3 A 10.53.0.3
|
||||
|
||||
optout NS ns.optout
|
||||
ns.optout A 10.53.0.3
|
||||
|
||||
nsec3-unknown NS ns.nsec3-unknown
|
||||
ns.nsec3-unknown A 10.53.0.3
|
||||
|
||||
optout-unknown NS ns.optout-unknown
|
||||
ns.optout-unknown A 10.53.0.3
|
||||
|
||||
multiple NS ns.multiple
|
||||
ns.multiple A 10.53.0.3
|
||||
|
||||
*.wild A 10.0.0.27
|
||||
|
||||
rsasha256 NS ns.rsasha256
|
||||
ns.rsasha256 A 10.53.0.3
|
||||
|
||||
rsasha512 NS ns.rsasha512
|
||||
ns.rsasha512 A 10.53.0.3
|
||||
|
||||
kskonly NS ns.kskonly
|
||||
ns.kskonly A 10.53.0.3
|
||||
|
||||
update-nsec3 NS ns.update-nsec3
|
||||
ns.update-nsec3 A 10.53.0.3
|
||||
|
||||
auto-nsec NS ns.auto-nsec
|
||||
ns.auto-nsec A 10.53.0.3
|
||||
|
||||
auto-nsec3 NS ns.auto-nsec3
|
||||
ns.auto-nsec3 A 10.53.0.3
|
||||
|
||||
|
||||
below-cname CNAME some.where.else.
|
||||
|
||||
insecure.below-cname NS ns.insecure.below-cname
|
||||
ns.insecure.below-cname A 10.53.0.3
|
||||
|
||||
secure.below-cname NS ns.secure.below-cname
|
||||
ns.secure.below-cname A 10.53.0.3
|
||||
|
||||
ttlpatch NS ns.ttlpatch
|
||||
ns.ttlpatch A 10.53.0.3
|
||||
|
||||
split-dnssec NS ns.split-dnssec
|
||||
ns.split-dnssec A 10.53.0.3
|
||||
|
||||
split-smart NS ns.split-smart
|
||||
ns.split-smart A 10.53.0.3
|
||||
|
||||
@@ -16,7 +16,114 @@ $TTL 300 ; 5 minutes
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
NS ns3
|
||||
ns2 A 10.53.0.2
|
||||
ns3 A 10.53.0.3
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
c A 10.0.0.3
|
||||
d A 10.0.0.4
|
||||
e A 10.0.0.5
|
||||
|
||||
; Used for testing ANY queries
|
||||
foo TXT "testing"
|
||||
foo A 10.0.1.0
|
||||
|
||||
bad-cname CNAME a
|
||||
bad-dname DNAME @
|
||||
|
||||
; Used for testing CNAME queries
|
||||
cname1 CNAME cname1-target
|
||||
cname1-target TXT "testing cname"
|
||||
|
||||
cname2 CNAME cname2-target
|
||||
cname2-target TXT "testing cname"
|
||||
|
||||
; Used for testing DNAME queries
|
||||
dname1 DNAME dname1-target
|
||||
foo.dname1-target TXT "testing dname"
|
||||
|
||||
dname2 DNAME dname2-target
|
||||
foo.dname2-target TXT "testing dname"
|
||||
|
||||
; A secure subdomain
|
||||
secure NS ns.secure
|
||||
ns.secure A 10.53.0.3
|
||||
|
||||
; An insecure subdomain
|
||||
insecure NS ns.insecure
|
||||
ns.insecure A 10.53.0.3
|
||||
|
||||
; A secure subdomain we're going to inject bogus data into
|
||||
bogus NS ns.bogus
|
||||
ns.bogus A 10.53.0.3
|
||||
|
||||
; A dynamic secure subdomain
|
||||
dynamic NS dynamic
|
||||
dynamic A 10.53.0.3
|
||||
|
||||
; A insecure subdomain
|
||||
mustbesecure NS ns.mustbesecure
|
||||
ns.mustbesecure A 10.53.0.3
|
||||
|
||||
; A rfc2535 signed zone w/ CNAME
|
||||
rfc2535 NS ns.rfc2535
|
||||
ns.rfc2535 A 10.53.0.3
|
||||
|
||||
z A 10.0.0.26
|
||||
|
||||
keyless NS ns.keyless
|
||||
ns.keyless A 10.53.0.3
|
||||
|
||||
nsec3 NS ns.nsec3
|
||||
ns.nsec3 A 10.53.0.3
|
||||
|
||||
optout NS ns.optout
|
||||
ns.optout A 10.53.0.3
|
||||
|
||||
nsec3-unknown NS ns.nsec3-unknown
|
||||
ns.nsec3-unknown A 10.53.0.3
|
||||
|
||||
optout-unknown NS ns.optout-unknown
|
||||
ns.optout-unknown A 10.53.0.3
|
||||
|
||||
multiple NS ns.multiple
|
||||
ns.multiple A 10.53.0.3
|
||||
|
||||
*.wild A 10.0.0.27
|
||||
|
||||
rsasha256 NS ns.rsasha256
|
||||
ns.rsasha256 A 10.53.0.3
|
||||
|
||||
rsasha512 NS ns.rsasha512
|
||||
ns.rsasha512 A 10.53.0.3
|
||||
|
||||
kskonly NS ns.kskonly
|
||||
ns.kskonly A 10.53.0.3
|
||||
|
||||
update-nsec3 NS ns.update-nsec3
|
||||
ns.update-nsec3 A 10.53.0.3
|
||||
|
||||
auto-nsec NS ns.auto-nsec
|
||||
ns.auto-nsec A 10.53.0.3
|
||||
|
||||
auto-nsec3 NS ns.auto-nsec3
|
||||
ns.auto-nsec3 A 10.53.0.3
|
||||
|
||||
|
||||
below-cname CNAME some.where.else.
|
||||
|
||||
insecure.below-cname NS ns.insecure.below-cname
|
||||
ns.insecure.below-cname A 10.53.0.3
|
||||
|
||||
secure.below-cname NS ns.secure.below-cname
|
||||
ns.secure.below-cname A 10.53.0.3
|
||||
|
||||
ttlpatch NS ns.ttlpatch
|
||||
ns.ttlpatch A 10.53.0.3
|
||||
|
||||
split-dnssec NS ns.split-dnssec
|
||||
ns.split-dnssec A 10.53.0.3
|
||||
|
||||
split-smart NS ns.split-smart
|
||||
ns.split-smart A 10.53.0.3
|
||||
|
||||
@@ -16,7 +16,114 @@ $TTL 300 ; 5 minutes
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
NS ns3
|
||||
ns2 A 10.53.0.2
|
||||
ns3 A 10.53.0.3
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
c A 10.0.0.3
|
||||
d A 10.0.0.4
|
||||
e A 10.0.0.5
|
||||
|
||||
; Used for testing ANY queries
|
||||
foo TXT "testing"
|
||||
foo A 10.0.1.0
|
||||
|
||||
bad-cname CNAME a
|
||||
bad-dname DNAME @
|
||||
|
||||
; Used for testing CNAME queries
|
||||
cname1 CNAME cname1-target
|
||||
cname1-target TXT "testing cname"
|
||||
|
||||
cname2 CNAME cname2-target
|
||||
cname2-target TXT "testing cname"
|
||||
|
||||
; Used for testing DNAME queries
|
||||
dname1 DNAME dname1-target
|
||||
foo.dname1-target TXT "testing dname"
|
||||
|
||||
dname2 DNAME dname2-target
|
||||
foo.dname2-target TXT "testing dname"
|
||||
|
||||
; A secure subdomain
|
||||
secure NS ns.secure
|
||||
ns.secure A 10.53.0.3
|
||||
|
||||
; An insecure subdomain
|
||||
insecure NS ns.insecure
|
||||
ns.insecure A 10.53.0.3
|
||||
|
||||
; A secure subdomain we're going to inject bogus data into
|
||||
bogus NS ns.bogus
|
||||
ns.bogus A 10.53.0.3
|
||||
|
||||
; A dynamic secure subdomain
|
||||
dynamic NS dynamic
|
||||
dynamic A 10.53.0.3
|
||||
|
||||
; A insecure subdomain
|
||||
mustbesecure NS ns.mustbesecure
|
||||
ns.mustbesecure A 10.53.0.3
|
||||
|
||||
; A rfc2535 signed zone w/ CNAME
|
||||
rfc2535 NS ns.rfc2535
|
||||
ns.rfc2535 A 10.53.0.3
|
||||
|
||||
z A 10.0.0.26
|
||||
|
||||
keyless NS ns.keyless
|
||||
ns.keyless A 10.53.0.3
|
||||
|
||||
nsec3 NS ns.nsec3
|
||||
ns.nsec3 A 10.53.0.3
|
||||
|
||||
optout NS ns.optout
|
||||
ns.optout A 10.53.0.3
|
||||
|
||||
nsec3-unknown NS ns.nsec3-unknown
|
||||
ns.nsec3-unknown A 10.53.0.3
|
||||
|
||||
optout-unknown NS ns.optout-unknown
|
||||
ns.optout-unknown A 10.53.0.3
|
||||
|
||||
multiple NS ns.multiple
|
||||
ns.multiple A 10.53.0.3
|
||||
|
||||
*.wild A 10.0.0.27
|
||||
|
||||
rsasha256 NS ns.rsasha256
|
||||
ns.rsasha256 A 10.53.0.3
|
||||
|
||||
rsasha512 NS ns.rsasha512
|
||||
ns.rsasha512 A 10.53.0.3
|
||||
|
||||
kskonly NS ns.kskonly
|
||||
ns.kskonly A 10.53.0.3
|
||||
|
||||
update-nsec3 NS ns.update-nsec3
|
||||
ns.update-nsec3 A 10.53.0.3
|
||||
|
||||
auto-nsec NS ns.auto-nsec
|
||||
ns.auto-nsec A 10.53.0.3
|
||||
|
||||
auto-nsec3 NS ns.auto-nsec3
|
||||
ns.auto-nsec3 A 10.53.0.3
|
||||
|
||||
|
||||
below-cname CNAME some.where.else.
|
||||
|
||||
insecure.below-cname NS ns.insecure.below-cname
|
||||
ns.insecure.below-cname A 10.53.0.3
|
||||
|
||||
secure.below-cname NS ns.secure.below-cname
|
||||
ns.secure.below-cname A 10.53.0.3
|
||||
|
||||
ttlpatch NS ns.ttlpatch
|
||||
ns.ttlpatch A 10.53.0.3
|
||||
|
||||
split-dnssec NS ns.split-dnssec
|
||||
ns.split-dnssec A 10.53.0.3
|
||||
|
||||
split-smart NS ns.split-smart
|
||||
ns.split-smart A 10.53.0.3
|
||||
|
||||
@@ -18,3 +18,110 @@ $TTL 300 ; 5 minutes
|
||||
NS ns3
|
||||
ns4 A 10.53.0.4
|
||||
ns3 A 10.53.0.3
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
d A 10.0.0.4
|
||||
|
||||
; Used for testing ANY queries
|
||||
foo TXT "testing"
|
||||
foo A 10.0.1.0
|
||||
|
||||
bad-cname CNAME a
|
||||
bad-dname DNAME @
|
||||
|
||||
; Used for testing CNAME queries
|
||||
cname1 CNAME cname1-target
|
||||
cname1-target TXT "testing cname"
|
||||
|
||||
cname2 CNAME cname2-target
|
||||
cname2-target TXT "testing cname"
|
||||
|
||||
; Used for testing DNAME queries
|
||||
dname1 DNAME dname1-target
|
||||
foo.dname1-target TXT "testing dname"
|
||||
|
||||
dname2 DNAME dname2-target
|
||||
foo.dname2-target TXT "testing dname"
|
||||
|
||||
; A secure subdomain
|
||||
secure NS ns.secure
|
||||
ns.secure A 10.53.0.3
|
||||
|
||||
; An insecure subdomain
|
||||
insecure NS ns.insecure
|
||||
ns.insecure A 10.53.0.3
|
||||
|
||||
; A secure subdomain we're going to inject bogus data into
|
||||
bogus NS ns.bogus
|
||||
ns.bogus A 10.53.0.3
|
||||
|
||||
; A dynamic secure subdomain
|
||||
dynamic NS dynamic
|
||||
dynamic A 10.53.0.3
|
||||
|
||||
; A insecure subdomain
|
||||
mustbesecure NS ns.mustbesecure
|
||||
ns.mustbesecure A 10.53.0.3
|
||||
|
||||
; A rfc2535 signed zone w/ CNAME
|
||||
rfc2535 NS ns.rfc2535
|
||||
ns.rfc2535 A 10.53.0.3
|
||||
|
||||
z A 10.0.0.26
|
||||
|
||||
keyless NS ns.keyless
|
||||
ns.keyless A 10.53.0.3
|
||||
|
||||
nsec3 NS ns.nsec3
|
||||
ns.nsec3 A 10.53.0.3
|
||||
|
||||
optout NS ns.optout
|
||||
ns.optout A 10.53.0.3
|
||||
|
||||
nsec3-unknown NS ns.nsec3-unknown
|
||||
ns.nsec3-unknown A 10.53.0.3
|
||||
|
||||
optout-unknown NS ns.optout-unknown
|
||||
ns.optout-unknown A 10.53.0.3
|
||||
|
||||
multiple NS ns.multiple
|
||||
ns.multiple A 10.53.0.3
|
||||
|
||||
*.wild A 10.0.0.27
|
||||
|
||||
rsasha256 NS ns.rsasha256
|
||||
ns.rsasha256 A 10.53.0.3
|
||||
|
||||
rsasha512 NS ns.rsasha512
|
||||
ns.rsasha512 A 10.53.0.3
|
||||
|
||||
kskonly NS ns.kskonly
|
||||
ns.kskonly A 10.53.0.3
|
||||
|
||||
update-nsec3 NS ns.update-nsec3
|
||||
ns.update-nsec3 A 10.53.0.3
|
||||
|
||||
auto-nsec NS ns.auto-nsec
|
||||
ns.auto-nsec A 10.53.0.3
|
||||
|
||||
auto-nsec3 NS ns.auto-nsec3
|
||||
ns.auto-nsec3 A 10.53.0.3
|
||||
|
||||
|
||||
below-cname CNAME some.where.else.
|
||||
|
||||
insecure.below-cname NS ns.insecure.below-cname
|
||||
ns.insecure.below-cname A 10.53.0.3
|
||||
|
||||
secure.below-cname NS ns.secure.below-cname
|
||||
ns.secure.below-cname A 10.53.0.3
|
||||
|
||||
ttlpatch NS ns.ttlpatch
|
||||
ns.ttlpatch A 10.53.0.3
|
||||
|
||||
split-dnssec NS ns.split-dnssec
|
||||
ns.split-dnssec A 10.53.0.3
|
||||
|
||||
split-smart NS ns.split-smart
|
||||
ns.split-smart A 10.53.0.3
|
||||
|
||||
@@ -27,6 +27,22 @@ do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Loop until retransfer3 has been transferred.
|
||||
for i in 1 2 3 4 5 6 7 8 9 0
|
||||
do
|
||||
ans=0
|
||||
$RNDCCMD 10.53.0.3 signing -nsec3param 1 0 0 - retransfer3 > /dev/null 2>&1 || ans=1
|
||||
[ $ans = 0 ] && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
for i in 1 2 3 4 5 6 7 8 9 0
|
||||
do
|
||||
nsec3param=`$DIG $DIGOPTS +nodnssec +short @10.53.0.3 nsec3param retransfer3.`
|
||||
test "$nsec3param" = "1 0 0 -" && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that rrsigs are replaced with ksk only ($n)"
|
||||
ret=0
|
||||
@@ -754,45 +770,9 @@ done
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "check 'rndc signing -nsec3param' requests are queued for zones which are not loaded ($n)"
|
||||
ret=0
|
||||
# The "retransfer3" zone is configured with "allow-transfer { none; };" on ns2,
|
||||
# which means it should not yet be available on ns3.
|
||||
$DIG $DIGOPTS @10.53.0.3 retransfer3 SOA > dig.out.ns3.pre.test$n
|
||||
grep "status: SERVFAIL" dig.out.ns3.pre.test$n > /dev/null || ret=1
|
||||
# Switch the zone to NSEC3. An "NSEC3 -> NSEC -> NSEC3" sequence is used purely
|
||||
# to test that multiple queued "rndc signing -nsec3param" requests are handled
|
||||
# properly.
|
||||
$RNDCCMD 10.53.0.3 signing -nsec3param 1 0 0 - retransfer3 > /dev/null 2>&1 || ret=1
|
||||
$RNDCCMD 10.53.0.3 signing -nsec3param none retransfer3 > /dev/null 2>&1 || ret=1
|
||||
$RNDCCMD 10.53.0.3 signing -nsec3param 1 0 0 - retransfer3 > /dev/null 2>&1 || ret=1
|
||||
# Reconfigure ns2 to allow outgoing transfers for the "retransfer3" zone.
|
||||
sed "s|\(allow-transfer { none; };.*\)|// \1|;" ns2/named.conf > ns2/named.conf.new
|
||||
mv ns2/named.conf.new ns2/named.conf
|
||||
$RNDCCMD 10.53.0.2 reconfig || ret=1
|
||||
# Request ns3 to retransfer the "retransfer3" zone.
|
||||
$RNDCCMD 10.53.0.3 retransfer retransfer3 || ret=1
|
||||
# Wait until ns3 finishes building the NSEC3 chain for "retransfer3". There is
|
||||
# no need to immediately set ret=1 if the expected message does not appear in
|
||||
# the log within the time limit because the query we will send shortly will
|
||||
# detect problems anyway.
|
||||
for i in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
grep "add.*retransfer3.*NSEC3PARAM 1 0 0 -" ns3/named.run > /dev/null && break
|
||||
sleep 1
|
||||
done
|
||||
# Check whether "retransfer3" uses NSEC3 as requested.
|
||||
$DIG $DIGOPTS @10.53.0.3 nonexist.retransfer3 A > dig.out.ns3.post.test$n
|
||||
grep "status: NXDOMAIN" dig.out.ns3.post.test$n > /dev/null || ret=1
|
||||
grep "NSEC3" dig.out.ns3.post.test$n > /dev/null || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "check rndc retransfer of a inline nsec3 slave retains nsec3 ($n)"
|
||||
ret=0
|
||||
$RNDCCMD 10.53.0.3 signing -nsec3param 1 0 0 - retransfer3 > /dev/null 2>&1 || ret=1
|
||||
for i in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
ans=0
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libbind9.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libbind9.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);..\..\..\lib\bind9\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libbind9.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libbind9.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -100,7 +100,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\..\lib\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@nafxcwd.lib;version.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>nafxcwd.lib;version.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -103,7 +103,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@nafxcw.lib;version.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>nafxcw.lib;version.lib;netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<EnableUAC>false</EnableUAC>
|
||||
</Link>
|
||||
|
||||
+15
-19
@@ -326,21 +326,36 @@ int sigwait(const unsigned int *set, int *sig);
|
||||
/* Define to 1 if you have the <krb5/krb5.h> header file. */
|
||||
#undef HAVE_KRB5_KRB5_H
|
||||
|
||||
/* Define to 1 if you have the `c' library (-lc). */
|
||||
#undef HAVE_LIBC
|
||||
|
||||
/* if system have backtrace function */
|
||||
#undef HAVE_LIBCTRACE
|
||||
|
||||
/* Define to 1 if you have the `c_r' library (-lc_r). */
|
||||
#undef HAVE_LIBC_R
|
||||
|
||||
/* Define if libidn2 was found */
|
||||
#undef HAVE_LIBIDN2
|
||||
|
||||
/* Define to 1 if you have the `nsl' library (-lnsl). */
|
||||
#undef HAVE_LIBNSL
|
||||
|
||||
/* Define to 1 if you have the `pthread' library (-lpthread). */
|
||||
#undef HAVE_LIBPTHREAD
|
||||
|
||||
/* Define to 1 if you have the `rt' library (-lrt). */
|
||||
#undef HAVE_LIBRT
|
||||
|
||||
/* Define to 1 if you have the `scf' library (-lscf). */
|
||||
#undef HAVE_LIBSCF
|
||||
|
||||
/* Define to 1 if you have the `socket' library (-lsocket). */
|
||||
#undef HAVE_LIBSOCKET
|
||||
|
||||
/* Define to 1 if you have the `thr' library (-lthr). */
|
||||
#undef HAVE_LIBTHR
|
||||
|
||||
/* Define if libxml2 was found */
|
||||
#undef HAVE_LIBXML2
|
||||
|
||||
@@ -374,24 +389,12 @@ int sigwait(const unsigned int *set, int *sig);
|
||||
/* define if OpenSSL supports Ed25519 */
|
||||
#undef HAVE_OPENSSL_ED25519
|
||||
|
||||
/* Define if you have POSIX threads libraries and header files. */
|
||||
#undef HAVE_PTHREAD
|
||||
|
||||
/* Define to 1 if you have the `pthread_attr_getstacksize' function. */
|
||||
#undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
|
||||
|
||||
/* Define to 1 if you have the `pthread_attr_setstacksize' function. */
|
||||
#undef HAVE_PTHREAD_ATTR_SETSTACKSIZE
|
||||
|
||||
/* Support for PTHREAD_MUTEX_ADAPTIVE_NP */
|
||||
#undef HAVE_PTHREAD_MUTEX_ADAPTIVE_NP
|
||||
|
||||
/* Define to 1 if you have the <pthread_np.h> header file. */
|
||||
#undef HAVE_PTHREAD_NP_H
|
||||
|
||||
/* Have PTHREAD_PRIO_INHERIT. */
|
||||
#undef HAVE_PTHREAD_PRIO_INHERIT
|
||||
|
||||
/* Define to 1 if you have the `pthread_setname_np' function. */
|
||||
#undef HAVE_PTHREAD_SETNAME_NP
|
||||
|
||||
@@ -440,9 +443,6 @@ int sigwait(const unsigned int *set, int *sig);
|
||||
/* Define to 1 if you have the `setresuid' function. */
|
||||
#undef HAVE_SETRESUID
|
||||
|
||||
/* Define to 1 if you have the `sigwait' function. */
|
||||
#undef HAVE_SIGWAIT
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
@@ -589,10 +589,6 @@ int sigwait(const unsigned int *set, int *sig);
|
||||
(O_NDELAY/O_NONBLOCK). */
|
||||
#undef PORT_NONBLOCK
|
||||
|
||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||
your system. */
|
||||
#undef PTHREAD_CREATE_JOINABLE
|
||||
|
||||
/* The size of `void *', as computed by sizeof. */
|
||||
#undef SIZEOF_VOID_P
|
||||
|
||||
|
||||
+205
-35
@@ -837,51 +837,221 @@ AC_SUBST(CHECK_DSA)
|
||||
#
|
||||
AC_CHECK_FUNCS(arc4random arc4random_buf arc4random_uniform getrandom)
|
||||
|
||||
AX_PTHREAD
|
||||
sinclude(config.threads.in)dnl
|
||||
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
CC="$PTHREAD_CC"
|
||||
if $use_threads
|
||||
then
|
||||
if test "X$GCC" = "Xyes"; then
|
||||
case "$host" in
|
||||
*-freebsd*)
|
||||
CC="$CC -pthread"
|
||||
CCOPT="$CCOPT -pthread"
|
||||
CCNOOPT="$CCNOOPT -pthread"
|
||||
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
|
||||
;;
|
||||
*-openbsd*)
|
||||
CC="$CC -pthread"
|
||||
CCOPT="$CCOPT -pthread"
|
||||
CCNOOPT="$CCNOOPT -pthread"
|
||||
;;
|
||||
*-solaris*)
|
||||
LIBS="$LIBS -lthread"
|
||||
;;
|
||||
*-ibm-aix*)
|
||||
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case $host in
|
||||
*-dec-osf*)
|
||||
CC="$CC -pthread"
|
||||
CCOPT="$CCOPT -pthread"
|
||||
CCNOOPT="$CCNOOPT -pthread"
|
||||
;;
|
||||
*-solaris*)
|
||||
CC="$CC -mt"
|
||||
CCOPT="$CCOPT -mt"
|
||||
CCNOOPT="$CCNOOPT -mt"
|
||||
;;
|
||||
*-ibm-aix*)
|
||||
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
|
||||
;;
|
||||
*-sco-sysv*uw*|*-*-sysv*UnixWare*)
|
||||
CC="$CC -Kthread"
|
||||
CCOPT="$CCOPT -Kthread"
|
||||
CCNOOPT="$CCNOOPT -Kthread"
|
||||
;;
|
||||
*-*-sysv*OpenUNIX*)
|
||||
CC="$CC -Kpthread"
|
||||
CCOPT="$CCOPT -Kpthread"
|
||||
CCNOOPT="$CCNOOPT -Kpthread"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
ALWAYS_DEFINES="-D_REENTRANT"
|
||||
ISC_PLATFORM_USETHREADS="#define ISC_PLATFORM_USETHREADS 1"
|
||||
THREADOPTOBJS='${THREADOPTOBJS}'
|
||||
THREADOPTSRCS='${THREADOPTSRCS}'
|
||||
thread_dir=pthreads
|
||||
#
|
||||
# We'd like to use sigwait() too
|
||||
#
|
||||
AC_CHECK_FUNC(sigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),
|
||||
AC_CHECK_LIB(c, sigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),
|
||||
AC_CHECK_LIB(pthread, sigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),
|
||||
AC_CHECK_LIB(pthread, _Psigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),))))
|
||||
|
||||
AC_CHECK_FUNC(pthread_attr_getstacksize,
|
||||
AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
|
||||
|
||||
AC_CHECK_FUNC(pthread_attr_setstacksize,
|
||||
AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
|
||||
|
||||
AC_ARG_WITH(locktype,
|
||||
AS_HELP_STRING([--with-locktype=ARG],
|
||||
[Specify mutex lock type
|
||||
(adaptive or standard)]),
|
||||
locktype="$withval", locktype="adaptive")
|
||||
|
||||
case "$locktype" in
|
||||
adaptive)
|
||||
AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
]], [[
|
||||
return (PTHREAD_MUTEX_ADAPTIVE_NP);
|
||||
]])],
|
||||
[ AC_MSG_RESULT(using adaptive lock type)
|
||||
AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
|
||||
[Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ],
|
||||
[ AC_MSG_RESULT(using standard lock type) ])
|
||||
;;
|
||||
standard)
|
||||
AC_MSG_RESULT(using standard lock type)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_CHECK_HEADERS(sched.h)
|
||||
|
||||
case "$host" in
|
||||
*-freebsd*)
|
||||
CC="$CC -pthread"
|
||||
CCOPT="$CCOPT -pthread"
|
||||
CCNOOPT="$CCNOOPT -pthread"
|
||||
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
|
||||
;;
|
||||
*-openbsd*)
|
||||
CC="$CC -pthread"
|
||||
CCOPT="$CCOPT -pthread"
|
||||
CCNOOPT="$CCNOOPT -pthread"
|
||||
;;
|
||||
*-solaris*)
|
||||
LIBS="$LIBS -lthread"
|
||||
;;
|
||||
*-ibm-aix*)
|
||||
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case $host in
|
||||
*-dec-osf*)
|
||||
CC="$CC -pthread"
|
||||
CCOPT="$CCOPT -pthread"
|
||||
CCNOOPT="$CCNOOPT -pthread"
|
||||
;;
|
||||
*-solaris*)
|
||||
CC="$CC -mt"
|
||||
CCOPT="$CCOPT -mt"
|
||||
CCNOOPT="$CCNOOPT -mt"
|
||||
;;
|
||||
*-ibm-aix*)
|
||||
STD_CDEFINES="$STD_CDEFINES -D_THREAD_SAFE"
|
||||
;;
|
||||
*-sco-sysv*uw*|*-*-sysv*UnixWare*)
|
||||
CC="$CC -Kthread"
|
||||
CCOPT="$CCOPT -Kthread"
|
||||
CCNOOPT="$CCNOOPT -Kthread"
|
||||
;;
|
||||
*-*-sysv*OpenUNIX*)
|
||||
CC="$CC -Kpthread"
|
||||
CCOPT="$CCOPT -Kpthread"
|
||||
CCNOOPT="$CCNOOPT -Kpthread"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
ALWAYS_DEFINES="-D_REENTRANT"
|
||||
THREADOPTOBJS='${THREADOPTOBJS}'
|
||||
THREADOPTSRCS='${THREADOPTSRCS}'
|
||||
thread_dir=pthreads
|
||||
#
|
||||
# We'd like to use sigwait() too
|
||||
#
|
||||
AC_CHECK_FUNCS([sigwait pthread_attr_getstacksize pthread_attr_setstacksize])
|
||||
AC_CHECK_FUNC(sigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),
|
||||
AC_CHECK_LIB(c, sigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),
|
||||
AC_CHECK_LIB(pthread, sigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),
|
||||
AC_CHECK_LIB(pthread, _Psigwait,
|
||||
AC_DEFINE(HAVE_SIGWAIT),))))
|
||||
|
||||
AC_ARG_WITH([locktype],
|
||||
AC_CHECK_FUNC(pthread_attr_getstacksize,
|
||||
AC_DEFINE(HAVE_PTHREAD_ATTR_GETSTACKSIZE),)
|
||||
|
||||
AC_CHECK_FUNC(pthread_attr_setstacksize,
|
||||
AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE),)
|
||||
|
||||
AC_ARG_WITH(locktype,
|
||||
AS_HELP_STRING([--with-locktype=ARG],
|
||||
[Specify mutex lock type
|
||||
(adaptive or standard)]),
|
||||
[], [with_locktype="adaptive"])
|
||||
(adaptive or standard)]),
|
||||
locktype="$withval", locktype="adaptive")
|
||||
|
||||
AS_CASE([$with_locktype],
|
||||
[adaptive],[
|
||||
AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
]],
|
||||
[[
|
||||
return (PTHREAD_MUTEX_ADAPTIVE_NP);
|
||||
]]
|
||||
)],
|
||||
[AC_MSG_RESULT([using adaptive lock type])
|
||||
AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
|
||||
[Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ],
|
||||
[AC_MSG_RESULT([using standard lock type])]
|
||||
)],
|
||||
[standard],[AC_MSG_RESULT([using standard lock type])],
|
||||
[AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])]
|
||||
)
|
||||
case "$locktype" in
|
||||
adaptive)
|
||||
AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
|
||||
|
||||
AC_CHECK_HEADERS([sched.h])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
]], [[
|
||||
return (PTHREAD_MUTEX_ADAPTIVE_NP);
|
||||
]])],
|
||||
[ AC_MSG_RESULT(using adaptive lock type)
|
||||
AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
|
||||
[Support for PTHREAD_MUTEX_ADAPTIVE_NP]) ],
|
||||
[ AC_MSG_RESULT(using standard lock type) ])
|
||||
;;
|
||||
standard)
|
||||
AC_MSG_RESULT(using standard lock type)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([You must specify "adaptive" or "standard" for --with-locktype.])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SEARCH_LIBS([sched_yield],[rt])
|
||||
AC_CHECK_FUNCS([sched_yield pthread_yield pthread_yield_np])
|
||||
AC_CHECK_HEADERS(sched.h)
|
||||
|
||||
case "$host" in
|
||||
*solaris-*)
|
||||
AC_CHECK_LIB(rt, sched_yield)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_CHECK_FUNCS(sched_yield pthread_yield pthread_yield_np)
|
||||
|
||||
#
|
||||
# Additional OS-specific issues related to pthreads and sigwait.
|
||||
@@ -935,7 +1105,7 @@ case "$host" in
|
||||
esac
|
||||
|
||||
# Look for functions relating to thread naming
|
||||
AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np])
|
||||
AC_CHECK_FUNCS(pthread_setname_np pthread_set_name_np)
|
||||
AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
|
||||
|
||||
#
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>../../isc/win32/$(Configuration);../../dns/win32/$(Configuration);../../isccfg/win32/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>.\libbind9.def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
@@ -98,7 +98,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>../../isc/win32/$(Configuration);../../dns/win32/$(Configuration);../../isccfg/win32/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>.\libbind9.def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
|
||||
@@ -270,7 +270,7 @@ dst__openssl_destroy(void) {
|
||||
static isc_result_t
|
||||
toresult(isc_result_t fallback) {
|
||||
isc_result_t result = fallback;
|
||||
unsigned long err = ERR_peek_error();
|
||||
unsigned long err = ERR_get_error();
|
||||
#if defined(ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED)
|
||||
int lib = ERR_GET_LIB(err);
|
||||
#endif
|
||||
|
||||
@@ -91,7 +91,6 @@ ATF_TC_BODY(dns_acl_isinsecure, tc) {
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
|
||||
result = dns_acl_merge(notgeoip, geoip, false);
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
#endif
|
||||
|
||||
ATF_CHECK(dns_acl_isinsecure(any)); /* any; */
|
||||
|
||||
@@ -910,7 +910,6 @@ insert_nodes(dns_rbt_t *mytree, char **names,
|
||||
node->data = n;
|
||||
names[*names_count] = isc_mem_strdup(mctx,
|
||||
namebuf);
|
||||
ATF_REQUIRE(names[*names_count] != NULL);
|
||||
*names_count += 1;
|
||||
break;
|
||||
}
|
||||
@@ -996,7 +995,6 @@ ATF_TC_BODY(rbt_insert_and_remove, tc) {
|
||||
*/
|
||||
isc_result_t result;
|
||||
dns_rbt_t *mytree = NULL;
|
||||
size_t *n;
|
||||
/*
|
||||
* We use an array for storing names instead of a set
|
||||
* structure. It's slow, but works and is good enough for tests.
|
||||
@@ -1015,11 +1013,6 @@ ATF_TC_BODY(rbt_insert_and_remove, tc) {
|
||||
result = dns_rbt_create(mctx, delete_data, NULL, &mytree);
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
|
||||
n = isc_mem_get(mctx, sizeof(size_t));
|
||||
ATF_REQUIRE(n != NULL);
|
||||
result = dns_rbt_addname(mytree, dns_rootname, n);
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
|
||||
memset(names, 0, sizeof(names));
|
||||
names_count = 0;
|
||||
|
||||
@@ -1058,12 +1051,6 @@ ATF_TC_BODY(rbt_insert_and_remove, tc) {
|
||||
}
|
||||
}
|
||||
|
||||
result = dns_rbt_deletename(mytree, dns_rootname, false);
|
||||
ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS,
|
||||
"result: %s", isc_result_totext(result));
|
||||
ATF_CHECK_EQ_MSG(dns_rbt_nodecount(mytree), 0,
|
||||
"%u != 0", dns_rbt_nodecount(mytree));
|
||||
|
||||
dns_rbt_destroy(&mytree);
|
||||
|
||||
dns_test_end();
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;@LIBXML2_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
</Link>
|
||||
@@ -99,7 +99,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;@LIBXML2_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
|
||||
+2
-42
@@ -357,10 +357,6 @@ struct dns_zone {
|
||||
*/
|
||||
dns_signinglist_t signing;
|
||||
dns_nsec3chainlist_t nsec3chain;
|
||||
/*%
|
||||
* List of outstanding NSEC3PARAM change requests.
|
||||
*/
|
||||
isc_eventlist_t setnsec3param_queue;
|
||||
/*%
|
||||
* Signing / re-signing quantum stopping parameters.
|
||||
*/
|
||||
@@ -1043,7 +1039,6 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) {
|
||||
zone->isselfarg = NULL;
|
||||
ISC_LIST_INIT(zone->signing);
|
||||
ISC_LIST_INIT(zone->nsec3chain);
|
||||
ISC_LIST_INIT(zone->setnsec3param_queue);
|
||||
zone->signatures = 10;
|
||||
zone->nodes = 100;
|
||||
zone->privatetype = (dns_rdatatype_t)0xffffU;
|
||||
@@ -1121,7 +1116,6 @@ zone_free(dns_zone_t *zone) {
|
||||
isc_mem_t *mctx = NULL;
|
||||
dns_signing_t *signing;
|
||||
dns_nsec3chain_t *nsec3chain;
|
||||
isc_event_t *setnsec3param_event;
|
||||
dns_include_t *include;
|
||||
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
@@ -1155,12 +1149,6 @@ zone_free(dns_zone_t *zone) {
|
||||
}
|
||||
|
||||
/* Unmanaged objects */
|
||||
while (!ISC_LIST_EMPTY(zone->setnsec3param_queue)) {
|
||||
setnsec3param_event = ISC_LIST_HEAD(zone->setnsec3param_queue);
|
||||
ISC_LIST_UNLINK(zone->setnsec3param_queue, setnsec3param_event,
|
||||
ev_link);
|
||||
isc_event_free(&setnsec3param_event);
|
||||
}
|
||||
for (signing = ISC_LIST_HEAD(zone->signing);
|
||||
signing != NULL;
|
||||
signing = ISC_LIST_HEAD(zone->signing)) {
|
||||
@@ -14756,8 +14744,6 @@ receive_secure_db(isc_task_t *task, isc_event_t *event) {
|
||||
unsigned int oldserial = 0;
|
||||
bool have_oldserial = false;
|
||||
nsec3paramlist_t nsec3list;
|
||||
isc_event_t *setnsec3param_event;
|
||||
dns_zone_t *dummy;
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
@@ -14882,18 +14868,6 @@ receive_secure_db(isc_task_t *task, isc_event_t *event) {
|
||||
zone_needdump(zone, 0); /* XXXMPA */
|
||||
UNLOCK_ZONE(zone->raw);
|
||||
|
||||
/*
|
||||
* Process any queued NSEC3PARAM change requests.
|
||||
*/
|
||||
while (!ISC_LIST_EMPTY(zone->setnsec3param_queue)) {
|
||||
setnsec3param_event = ISC_LIST_HEAD(zone->setnsec3param_queue);
|
||||
ISC_LIST_UNLINK(zone->setnsec3param_queue, setnsec3param_event,
|
||||
ev_link);
|
||||
dummy = NULL;
|
||||
zone_iattach(zone, &dummy);
|
||||
isc_task_send(zone->task, &setnsec3param_event);
|
||||
}
|
||||
|
||||
failure:
|
||||
UNLOCK_ZONE(zone);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
@@ -19101,22 +19075,8 @@ dns_zone_setnsec3param(dns_zone_t *zone, uint8_t hash, uint8_t flags,
|
||||
np->nsec = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* setnsec3param() will silently return early if the zone does not yet
|
||||
* have a database. Prevent that by queueing the event up if zone->db
|
||||
* is NULL. All events queued here are subsequently processed by
|
||||
* receive_secure_db() if it ever gets called or simply freed by
|
||||
* zone_free() otherwise.
|
||||
*/
|
||||
ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_read);
|
||||
if (zone->db != NULL) {
|
||||
zone_iattach(zone, &dummy);
|
||||
isc_task_send(zone->task, &e);
|
||||
} else {
|
||||
ISC_LIST_APPEND(zone->setnsec3param_queue, e, ev_link);
|
||||
e = NULL;
|
||||
}
|
||||
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_read);
|
||||
zone_iattach(zone, &dummy);
|
||||
isc_task_send(zone->task, &e);
|
||||
|
||||
failure:
|
||||
if (e != NULL)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>.\libirs.def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
@@ -98,7 +98,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>.\libirs.def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
|
||||
+4
-4
@@ -18,7 +18,7 @@ VERSION=@BIND9_VERSION@
|
||||
@BIND9_MAKE_INCLUDES@
|
||||
|
||||
CINCLUDES = -I${srcdir}/unix/include \
|
||||
-I${srcdir}/pthreads/include \
|
||||
-I${srcdir}/@ISC_THREAD_DIR@/include \
|
||||
-I${srcdir}/@ISC_ARCH_DIR@/include \
|
||||
-I./include \
|
||||
-I${srcdir}/include ${DNS_INCLUDES} @OPENSSL_INCLUDES@
|
||||
@@ -36,9 +36,9 @@ UNIXOBJS = @ISC_ISCIPV6_O@ unix/pk11_api.@O@ \
|
||||
|
||||
NLSOBJS = nls/msgcat.@O@
|
||||
|
||||
THREADOPTOBJS = pthreads/condition.@O@ pthreads/mutex.@O@
|
||||
THREADOPTOBJS = @ISC_THREAD_DIR@/condition.@O@ @ISC_THREAD_DIR@/mutex.@O@
|
||||
|
||||
THREADOBJS = @THREADOPTOBJS@ pthreads/thread.@O@
|
||||
THREADOBJS = @THREADOPTOBJS@ @ISC_THREAD_DIR@/thread.@O@
|
||||
|
||||
WIN32OBJS = win32/condition.@O@ win32/dir.@O@ win32/errno.@O@ \
|
||||
win32/file.@O@ win32/fsaccess.@O@ \
|
||||
@@ -85,7 +85,7 @@ LIBS = @OPENSSL_LIBS@ @LIBS@
|
||||
# Attempt to disable parallel processing.
|
||||
.NOTPARALLEL:
|
||||
.NO_PARALLEL:
|
||||
SUBDIRS = include unix nls pthreads @ISC_ARCH_DIR@
|
||||
SUBDIRS = include unix nls @ISC_THREAD_DIR@ @ISC_ARCH_DIR@
|
||||
TARGETS = timestamp
|
||||
TESTDIRS = @UNITTESTS@
|
||||
|
||||
|
||||
@@ -1,253 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/magic.h>
|
||||
#include <isc/mutex.h>
|
||||
#include <isc/once.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
static isc_mutex_t createlock;
|
||||
static isc_once_t once = ISC_ONCE_INIT;
|
||||
static isc_appctxcreatefunc_t appctx_createfunc = NULL;
|
||||
static bool is_running = false;
|
||||
|
||||
#define ISCAPI_APPMETHODS_VALID(m) ISC_MAGIC_VALID(m, ISCAPI_APPMETHODS_MAGIC)
|
||||
|
||||
static void
|
||||
initialize(void) {
|
||||
RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_register(isc_appctxcreatefunc_t createfunc) {
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
|
||||
|
||||
LOCK(&createlock);
|
||||
if (appctx_createfunc == NULL)
|
||||
appctx_createfunc = createfunc;
|
||||
else
|
||||
result = ISC_R_EXISTS;
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
isc_result_t result;
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__appctx_create(mctx, ctxp));
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(appctx_createfunc != NULL);
|
||||
result = (*appctx_createfunc)(mctx, ctxp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
void
|
||||
isc_appctx_destroy(isc_appctx_t **ctxp) {
|
||||
REQUIRE(ctxp != NULL && ISCAPI_APPCTX_VALID(*ctxp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__appctx_destroy(ctxp);
|
||||
else
|
||||
(*ctxp)->methods->ctxdestroy(ctxp);
|
||||
|
||||
ENSURE(*ctxp == NULL);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_ctxstart(isc_appctx_t *ctx) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__app_ctxstart(ctx));
|
||||
|
||||
return (ctx->methods->ctxstart(ctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_ctxrun(isc_appctx_t *ctx) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__app_ctxrun(ctx));
|
||||
|
||||
return (ctx->methods->ctxrun(ctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_ctxonrun(isc_appctx_t *ctx, isc_mem_t *mctx,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg)
|
||||
{
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__app_ctxonrun(ctx, mctx, task, action, arg));
|
||||
|
||||
return (ctx->methods->ctxonrun(ctx, mctx, task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_ctxsuspend(isc_appctx_t *ctx) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__app_ctxsuspend(ctx));
|
||||
|
||||
return (ctx->methods->ctxsuspend(ctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_ctxshutdown(isc_appctx_t *ctx) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__app_ctxshutdown(ctx));
|
||||
|
||||
return (ctx->methods->ctxshutdown(ctx));
|
||||
}
|
||||
|
||||
void
|
||||
isc_app_ctxfinish(isc_appctx_t *ctx) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__app_ctxfinish(ctx);
|
||||
|
||||
ctx->methods->ctxfinish(ctx);
|
||||
}
|
||||
|
||||
void
|
||||
isc_appctx_settaskmgr(isc_appctx_t *ctx, isc_taskmgr_t *taskmgr) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
REQUIRE(taskmgr != NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__appctx_settaskmgr(ctx, taskmgr);
|
||||
|
||||
ctx->methods->settaskmgr(ctx, taskmgr);
|
||||
}
|
||||
|
||||
void
|
||||
isc_appctx_setsocketmgr(isc_appctx_t *ctx, isc_socketmgr_t *socketmgr) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
REQUIRE(socketmgr != NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__appctx_setsocketmgr(ctx, socketmgr);
|
||||
|
||||
ctx->methods->setsocketmgr(ctx, socketmgr);
|
||||
}
|
||||
|
||||
void
|
||||
isc_appctx_settimermgr(isc_appctx_t *ctx, isc_timermgr_t *timermgr) {
|
||||
REQUIRE(ISCAPI_APPCTX_VALID(ctx));
|
||||
REQUIRE(timermgr != NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__appctx_settimermgr(ctx, timermgr);
|
||||
|
||||
ctx->methods->settimermgr(ctx, timermgr);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_start(void) {
|
||||
if (isc_bind9)
|
||||
return (isc__app_start());
|
||||
|
||||
return (ISC_R_NOTIMPLEMENTED);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_onrun(isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
if (isc_bind9)
|
||||
return (isc__app_onrun(mctx, task, action, arg));
|
||||
|
||||
return (ISC_R_NOTIMPLEMENTED);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_run() {
|
||||
if (isc_bind9) {
|
||||
isc_result_t result;
|
||||
|
||||
is_running = true;
|
||||
result = isc__app_run();
|
||||
is_running = false;
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
return (ISC_R_NOTIMPLEMENTED);
|
||||
}
|
||||
|
||||
bool
|
||||
isc_app_isrunning() {
|
||||
return (is_running);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_shutdown(void) {
|
||||
if (isc_bind9)
|
||||
return (isc__app_shutdown());
|
||||
|
||||
return (ISC_R_NOTIMPLEMENTED);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_app_reload(void) {
|
||||
if (isc_bind9)
|
||||
return (isc__app_reload());
|
||||
|
||||
return (ISC_R_NOTIMPLEMENTED);
|
||||
}
|
||||
|
||||
void
|
||||
isc_app_finish(void) {
|
||||
if (!isc_bind9)
|
||||
return;
|
||||
|
||||
isc__app_finish();
|
||||
}
|
||||
|
||||
void
|
||||
isc_app_block(void) {
|
||||
if (!isc_bind9)
|
||||
return;
|
||||
|
||||
isc__app_block();
|
||||
}
|
||||
|
||||
void
|
||||
isc_app_unblock(void) {
|
||||
if (!isc_bind9)
|
||||
return;
|
||||
|
||||
isc__app_unblock();
|
||||
}
|
||||
@@ -19,12 +19,12 @@ VERSION=@BIND9_VERSION@
|
||||
# install target below.
|
||||
#
|
||||
HEADERS = aes.h app.h assertions.h backtrace.h base32.h base64.h \
|
||||
bind9.h buffer.h bufferlist.h \
|
||||
bind9.h boolean.h buffer.h bufferlist.h \
|
||||
commandline.h counter.h crc64.h deprecated.h \
|
||||
errno.h error.h event.h eventclass.h \
|
||||
file.h formatcheck.h fsaccess.h fuzz.h \
|
||||
hash.h heap.h hex.h hmacmd5.h hmacsha.h ht.h httpd.h \
|
||||
interfaceiter.h @ISC_IPV6_H@ iterated_hash.h \
|
||||
int.h interfaceiter.h @ISC_IPV6_H@ iterated_hash.h \
|
||||
json.h lang.h lex.h lfsr.h lib.h likely.h list.h log.h \
|
||||
magic.h md5.h mem.h meminfo.h msgcat.h msgs.h mutexblock.h \
|
||||
netaddr.h netscope.h nonce.h os.h parseint.h \
|
||||
|
||||
@@ -94,29 +94,6 @@ typedef isc_event_t isc_appevent_t;
|
||||
#define ISC_APPEVENT_SHUTDOWN (ISC_EVENTCLASS_APP + 1)
|
||||
#define ISC_APPEVENT_LASTEVENT (ISC_EVENTCLASS_APP + 65535)
|
||||
|
||||
/*%
|
||||
* app module methods. Only app driver implementations use this structure.
|
||||
* Other clients should use the top-level interfaces (i.e., isc_app_xxx
|
||||
* functions). magic must be ISCAPI_APPMETHODS_MAGIC.
|
||||
*/
|
||||
typedef struct isc_appmethods {
|
||||
void (*ctxdestroy)(isc_appctx_t **ctxp);
|
||||
isc_result_t (*ctxstart)(isc_appctx_t *ctx);
|
||||
isc_result_t (*ctxrun)(isc_appctx_t *ctx);
|
||||
isc_result_t (*ctxsuspend)(isc_appctx_t *ctx);
|
||||
isc_result_t (*ctxshutdown)(isc_appctx_t *ctx);
|
||||
void (*ctxfinish)(isc_appctx_t *ctx);
|
||||
void (*settaskmgr)(isc_appctx_t *ctx,
|
||||
isc_taskmgr_t *timermgr);
|
||||
void (*setsocketmgr)(isc_appctx_t *ctx,
|
||||
isc_socketmgr_t *timermgr);
|
||||
void (*settimermgr)(isc_appctx_t *ctx,
|
||||
isc_timermgr_t *timermgr);
|
||||
isc_result_t (*ctxonrun)(isc_appctx_t *ctx, isc_mem_t *mctx,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg);
|
||||
} isc_appmethods_t;
|
||||
|
||||
/*%
|
||||
* This structure is actually just the common prefix of an application context
|
||||
* implementation's version of an isc_appctx_t.
|
||||
@@ -129,7 +106,6 @@ typedef struct isc_appmethods {
|
||||
struct isc_appctx {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_appmethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_APPCTX_MAGIC ISC_MAGIC('A','a','p','c')
|
||||
|
||||
@@ -181,44 +181,6 @@ LIBISC_EXTERNAL_DATA extern unsigned int isc_mem_defaultflags;
|
||||
* \endcode
|
||||
*/
|
||||
|
||||
/*% memory and memory pool methods */
|
||||
typedef struct isc_memmethods {
|
||||
void (*attach)(isc_mem_t *source, isc_mem_t **targetp);
|
||||
void (*detach)(isc_mem_t **mctxp);
|
||||
void (*destroy)(isc_mem_t **mctxp);
|
||||
void *(*memget)(isc_mem_t *mctx, size_t size _ISC_MEM_FLARG);
|
||||
void (*memput)(isc_mem_t *mctx, void *ptr, size_t size _ISC_MEM_FLARG);
|
||||
void (*memputanddetach)(isc_mem_t **mctxp, void *ptr,
|
||||
size_t size _ISC_MEM_FLARG);
|
||||
void *(*memallocate)(isc_mem_t *mctx, size_t size _ISC_MEM_FLARG);
|
||||
void *(*memreallocate)(isc_mem_t *mctx, void *ptr,
|
||||
size_t size _ISC_MEM_FLARG);
|
||||
char *(*memstrdup)(isc_mem_t *mctx, const char *s _ISC_MEM_FLARG);
|
||||
void (*memfree)(isc_mem_t *mctx, void *ptr _ISC_MEM_FLARG);
|
||||
void (*setdestroycheck)(isc_mem_t *mctx, bool flag);
|
||||
void (*setwater)(isc_mem_t *ctx, isc_mem_water_t water,
|
||||
void *water_arg, size_t hiwater, size_t lowater);
|
||||
void (*waterack)(isc_mem_t *ctx, int flag);
|
||||
size_t (*inuse)(isc_mem_t *mctx);
|
||||
size_t (*maxinuse)(isc_mem_t *mctx);
|
||||
size_t (*total)(isc_mem_t *mctx);
|
||||
bool (*isovermem)(isc_mem_t *mctx);
|
||||
isc_result_t (*mpcreate)(isc_mem_t *mctx, size_t size,
|
||||
isc_mempool_t **mpctxp);
|
||||
} isc_memmethods_t;
|
||||
|
||||
typedef struct isc_mempoolmethods {
|
||||
void (*destroy)(isc_mempool_t **mpctxp);
|
||||
void *(*get)(isc_mempool_t *mpctx _ISC_MEM_FLARG);
|
||||
void (*put)(isc_mempool_t *mpctx, void *mem _ISC_MEM_FLARG);
|
||||
unsigned int (*getallocated)(isc_mempool_t *mpctx);
|
||||
void (*setmaxalloc)(isc_mempool_t *mpctx, unsigned int limit);
|
||||
void (*setfreemax)(isc_mempool_t *mpctx, unsigned int limit);
|
||||
void (*setname)(isc_mempool_t *mpctx, const char *name);
|
||||
void (*associatelock)(isc_mempool_t *mpctx, isc_mutex_t *lock);
|
||||
void (*setfillcount)(isc_mempool_t *mpctx, unsigned int limit);
|
||||
} isc_mempoolmethods_t;
|
||||
|
||||
/*%
|
||||
* This structure is actually just the common prefix of a memory context
|
||||
* implementation's version of an isc_mem_t.
|
||||
@@ -231,7 +193,6 @@ typedef struct isc_mempoolmethods {
|
||||
struct isc_mem {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_memmethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_MCTX_MAGIC ISC_MAGIC('A','m','c','x')
|
||||
@@ -245,7 +206,6 @@ struct isc_mem {
|
||||
struct isc_mempool {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_mempoolmethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_MPOOL_MAGIC ISC_MAGIC('A','m','p','l')
|
||||
@@ -702,30 +662,6 @@ ISCMEMPOOLFUNC(get)(isc_mempool_t * _ISC_MEM_FLARG);
|
||||
void
|
||||
ISCMEMPOOLFUNC(put)(isc_mempool_t *, void * _ISC_MEM_FLARG);
|
||||
|
||||
/*%<
|
||||
* See isc_mem_create2() above.
|
||||
*/
|
||||
typedef isc_result_t
|
||||
(*isc_memcreatefunc_t)(size_t init_max_size, size_t target_size,
|
||||
isc_mem_t **ctxp, unsigned int flags);
|
||||
|
||||
isc_result_t
|
||||
isc_mem_register(isc_memcreatefunc_t createfunc);
|
||||
/*%<
|
||||
* Register a new memory management implementation and add it to the list of
|
||||
* supported implementations. This function must be called when a different
|
||||
* memory management library is used than the one contained in the ISC library.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__mem_register(void);
|
||||
/*%<
|
||||
* A short cut function that specifies the memory management module in the ISC
|
||||
* library for isc_mem_register(). An application that uses the ISC library
|
||||
* usually do not have to care about this function: it would call
|
||||
* isc_lib_register(), which internally calls this function.
|
||||
*/
|
||||
|
||||
void
|
||||
isc__mem_printactive(isc_mem_t *mctx, FILE *file);
|
||||
/*%<
|
||||
|
||||
@@ -62,55 +62,6 @@
|
||||
#include <isc/types.h>
|
||||
#include <isc/xml.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
/* from the old namespace.h */
|
||||
|
||||
#define isc_socket_create isc__socket_create
|
||||
#define isc_socket_dup isc__socket_dup
|
||||
#define isc_socket_attach isc__socket_attach
|
||||
#define isc_socket_detach isc__socket_detach
|
||||
#define isc_socketmgr_create isc__socketmgr_create
|
||||
#define isc_socketmgr_create2 isc__socketmgr_create2
|
||||
#define isc_socketmgr_destroy isc__socketmgr_destroy
|
||||
#define isc_socket_open isc__socket_open
|
||||
#define isc_socket_close isc__socket_close
|
||||
#define isc_socket_recvv isc__socket_recvv
|
||||
#define isc_socket_recv isc__socket_recv
|
||||
#define isc_socket_recv2 isc__socket_recv2
|
||||
#define isc_socket_send isc__socket_send
|
||||
#define isc_socket_sendto isc__socket_sendto
|
||||
#define isc_socket_sendv isc__socket_sendv
|
||||
#define isc_socket_sendtov isc__socket_sendtov
|
||||
#define isc_socket_sendtov2 isc__socket_sendtov2
|
||||
#define isc_socket_sendto2 isc__socket_sendto2
|
||||
#define isc_socket_cleanunix isc__socket_cleanunix
|
||||
#define isc_socket_permunix isc__socket_permunix
|
||||
#define isc_socket_bind isc__socket_bind
|
||||
#define isc_socket_filter isc__socket_filter
|
||||
#define isc_socket_listen isc__socket_listen
|
||||
#define isc_socket_accept isc__socket_accept
|
||||
#define isc_socket_connect isc__socket_connect
|
||||
#define isc_socket_getfd isc__socket_getfd
|
||||
#define isc_socket_getname isc__socket_getname
|
||||
#define isc_socket_gettag isc__socket_gettag
|
||||
#define isc_socket_getpeername isc__socket_getpeername
|
||||
#define isc_socket_getsockname isc__socket_getsockname
|
||||
#define isc_socket_cancel isc__socket_cancel
|
||||
#define isc_socket_gettype isc__socket_gettype
|
||||
#define isc_socket_isbound isc__socket_isbound
|
||||
#define isc_socket_ipv6only isc__socket_ipv6only
|
||||
#define isc_socket_setname isc__socket_setname
|
||||
#define isc_socketmgr_getmaxsockets isc__socketmgr_getmaxsockets
|
||||
#define isc_socketmgr_setstats isc__socketmgr_setstats
|
||||
#define isc_socketmgr_setreserved isc__socketmgr_setreserved
|
||||
#define isc__socketmgr_maxudp isc___socketmgr_maxudp
|
||||
#define isc_socket_fdwatchcreate isc__socket_fdwatchcreate
|
||||
#define isc_socket_fdwatchpoke isc__socket_fdwatchpoke
|
||||
#define isc_socket_dscp isc__socket_dscp
|
||||
|
||||
#endif
|
||||
|
||||
ISC_LANG_BEGINDECLS
|
||||
|
||||
/***
|
||||
@@ -333,60 +284,6 @@ typedef enum {
|
||||
#define ISC_SOCKFDWATCH_WRITE 0x00000002 /*%< watch for writable */
|
||||
/*@}*/
|
||||
|
||||
/*% Socket and socket manager methods */
|
||||
typedef struct isc_socketmgrmethods {
|
||||
void (*destroy)(isc_socketmgr_t **managerp);
|
||||
isc_result_t (*socketcreate)(isc_socketmgr_t *manager, int pf,
|
||||
isc_sockettype_t type,
|
||||
isc_socket_t **socketp);
|
||||
isc_result_t (*fdwatchcreate)(isc_socketmgr_t *manager, int fd,
|
||||
int flags,
|
||||
isc_sockfdwatch_t callback,
|
||||
void *cbarg, isc_task_t *task,
|
||||
isc_socket_t **socketp);
|
||||
} isc_socketmgrmethods_t;
|
||||
|
||||
typedef struct isc_socketmethods {
|
||||
void (*attach)(isc_socket_t *socket,
|
||||
isc_socket_t **socketp);
|
||||
void (*detach)(isc_socket_t **socketp);
|
||||
isc_result_t (*bind)(isc_socket_t *sock,
|
||||
const isc_sockaddr_t *sockaddr,
|
||||
unsigned int options);
|
||||
isc_result_t (*sendto)(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg,
|
||||
const isc_sockaddr_t *address,
|
||||
struct in6_pktinfo *pktinfo);
|
||||
isc_result_t (*sendto2)(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task,
|
||||
const isc_sockaddr_t *address,
|
||||
struct in6_pktinfo *pktinfo,
|
||||
isc_socketevent_t *event,
|
||||
unsigned int flags);
|
||||
isc_result_t (*connect)(isc_socket_t *sock,
|
||||
const isc_sockaddr_t *addr,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg);
|
||||
isc_result_t (*recv)(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg);
|
||||
isc_result_t (*recv2)(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_socketevent_t *event, unsigned int flags);
|
||||
void (*cancel)(isc_socket_t *sock, isc_task_t *task,
|
||||
unsigned int how);
|
||||
isc_result_t (*getsockname)(isc_socket_t *sock,
|
||||
isc_sockaddr_t *addressp);
|
||||
isc_sockettype_t (*gettype)(isc_socket_t *sock);
|
||||
void (*ipv6only)(isc_socket_t *sock, bool yes);
|
||||
isc_result_t (*fdwatchpoke)(isc_socket_t *sock, int flags);
|
||||
isc_result_t (*dup)(isc_socket_t *socket,
|
||||
isc_socket_t **socketp);
|
||||
int (*getfd)(isc_socket_t *socket);
|
||||
void (*dscp)(isc_socket_t *socket, isc_dscp_t dscp);
|
||||
} isc_socketmethods_t;
|
||||
|
||||
/*%
|
||||
* This structure is actually just the common prefix of a socket manager
|
||||
* object implementation's version of an isc_socketmgr_t.
|
||||
@@ -404,7 +301,6 @@ typedef struct isc_socketmethods {
|
||||
struct isc_socketmgr {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_socketmgrmethods_t *methods;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -420,7 +316,6 @@ struct isc_socketmgr {
|
||||
struct isc_socket {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_socketmethods_t *methods;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -1138,7 +1033,7 @@ isc_socket_gettype(isc_socket_t *sock);
|
||||
|
||||
/*@{*/
|
||||
bool
|
||||
isc__socket_isbound(isc_socket_t *sock);
|
||||
isc_socket_isbound(isc_socket_t *sock);
|
||||
/*%
|
||||
* Intended for internal use in BIND9 only
|
||||
*/
|
||||
@@ -1231,13 +1126,13 @@ int isc_socket_getfd(isc_socket_t *socket);
|
||||
*/
|
||||
|
||||
void
|
||||
isc__socketmgr_setreserved(isc_socketmgr_t *mgr, uint32_t);
|
||||
isc_socketmgr_setreserved(isc_socketmgr_t *mgr, uint32_t);
|
||||
/*%<
|
||||
* Temporary. For use by named only.
|
||||
*/
|
||||
|
||||
void
|
||||
isc__socketmgr_maxudp(isc_socketmgr_t *mgr, int maxudp);
|
||||
isc_socketmgr_maxudp(isc_socketmgr_t *mgr, int maxudp);
|
||||
/*%<
|
||||
* Test interface. Drop UDP packet > 'maxudp'.
|
||||
*/
|
||||
@@ -1264,23 +1159,6 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr, json_object *stats);
|
||||
typedef isc_result_t
|
||||
(*isc_socketmgrcreatefunc_t)(isc_mem_t *mctx, isc_socketmgr_t **managerp);
|
||||
|
||||
isc_result_t
|
||||
isc_socket_register(isc_socketmgrcreatefunc_t createfunc);
|
||||
/*%<
|
||||
* Register a new socket I/O implementation and add it to the list of
|
||||
* supported implementations. This function must be called when a different
|
||||
* event library is used than the one contained in the ISC library.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__socket_register(void);
|
||||
/*%<
|
||||
* A short cut function that specifies the socket I/O module in the ISC
|
||||
* library for isc_socket_register(). An application that uses the ISC library
|
||||
* usually do not have to care about this function: it would call
|
||||
* isc_lib_register(), which internally calls this function.
|
||||
*/
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
#endif /* ISC_SOCKET_H */
|
||||
|
||||
@@ -102,42 +102,6 @@ typedef enum {
|
||||
isc_taskmgrmode_privileged
|
||||
} isc_taskmgrmode_t;
|
||||
|
||||
/*% Task and task manager methods */
|
||||
typedef struct isc_taskmgrmethods {
|
||||
void (*destroy)(isc_taskmgr_t **managerp);
|
||||
void (*setmode)(isc_taskmgr_t *manager,
|
||||
isc_taskmgrmode_t mode);
|
||||
isc_taskmgrmode_t (*mode)(isc_taskmgr_t *manager);
|
||||
isc_result_t (*taskcreate)(isc_taskmgr_t *manager,
|
||||
unsigned int quantum,
|
||||
isc_task_t **taskp);
|
||||
void (*setexcltask)(isc_taskmgr_t *mgr, isc_task_t *task);
|
||||
isc_result_t (*excltask)(isc_taskmgr_t *mgr, isc_task_t **taskp);
|
||||
} isc_taskmgrmethods_t;
|
||||
|
||||
typedef struct isc_taskmethods {
|
||||
void (*attach)(isc_task_t *source, isc_task_t **targetp);
|
||||
void (*detach)(isc_task_t **taskp);
|
||||
void (*destroy)(isc_task_t **taskp);
|
||||
void (*send)(isc_task_t *task, isc_event_t **eventp);
|
||||
void (*sendanddetach)(isc_task_t **taskp, isc_event_t **eventp);
|
||||
unsigned int (*unsend)(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
void *tag, isc_eventlist_t *events);
|
||||
isc_result_t (*onshutdown)(isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg);
|
||||
void (*shutdown)(isc_task_t *task);
|
||||
void (*setname)(isc_task_t *task, const char *name, void *tag);
|
||||
unsigned int (*purgeevents)(isc_task_t *task, void *sender,
|
||||
isc_eventtype_t type, void *tag);
|
||||
unsigned int (*purgerange)(isc_task_t *task, void *sender,
|
||||
isc_eventtype_t first, isc_eventtype_t last,
|
||||
void *tag);
|
||||
isc_result_t (*beginexclusive)(isc_task_t *task);
|
||||
void (*endexclusive)(isc_task_t *task);
|
||||
void (*setprivilege)(isc_task_t *task, bool priv);
|
||||
bool (*privilege)(isc_task_t *task);
|
||||
} isc_taskmethods_t;
|
||||
|
||||
/*%
|
||||
* This structure is actually just the common prefix of a task manager
|
||||
* object implementation's version of an isc_taskmgr_t.
|
||||
@@ -150,7 +114,6 @@ typedef struct isc_taskmethods {
|
||||
struct isc_taskmgr {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_taskmgrmethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_TASKMGR_MAGIC ISC_MAGIC('A','t','m','g')
|
||||
@@ -164,7 +127,6 @@ struct isc_taskmgr {
|
||||
struct isc_task {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_taskmethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_TASK_MAGIC ISC_MAGIC('A','t','s','t')
|
||||
|
||||
@@ -99,29 +99,6 @@ typedef struct isc_timerevent {
|
||||
#define ISC_TIMEREVENT_LIFE (ISC_EVENTCLASS_TIMER + 3)
|
||||
#define ISC_TIMEREVENT_LASTEVENT (ISC_EVENTCLASS_TIMER + 65535)
|
||||
|
||||
/*% Timer and timer manager methods */
|
||||
typedef struct {
|
||||
void (*destroy)(isc_timermgr_t **managerp);
|
||||
isc_result_t (*timercreate)(isc_timermgr_t *manager,
|
||||
isc_timertype_t type,
|
||||
const isc_time_t *expires,
|
||||
const isc_interval_t *interval,
|
||||
isc_task_t *task,
|
||||
isc_taskaction_t action,
|
||||
void *arg,
|
||||
isc_timer_t **timerp);
|
||||
} isc_timermgrmethods_t;
|
||||
|
||||
typedef struct {
|
||||
void (*attach)(isc_timer_t *timer, isc_timer_t **timerp);
|
||||
void (*detach)(isc_timer_t **timerp);
|
||||
isc_result_t (*reset)(isc_timer_t *timer, isc_timertype_t type,
|
||||
const isc_time_t *expires,
|
||||
const isc_interval_t *interval,
|
||||
bool purge);
|
||||
isc_result_t (*touch)(isc_timer_t *timer);
|
||||
} isc_timermethods_t;
|
||||
|
||||
/*%
|
||||
* This structure is actually just the common prefix of a timer manager
|
||||
* object implementation's version of an isc_timermgr_t.
|
||||
@@ -134,7 +111,6 @@ typedef struct {
|
||||
struct isc_timermgr {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_timermgrmethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_TIMERMGR_MAGIC ISC_MAGIC('A','t','m','g')
|
||||
@@ -148,7 +124,6 @@ struct isc_timermgr {
|
||||
struct isc_timer {
|
||||
unsigned int impmagic;
|
||||
unsigned int magic;
|
||||
isc_timermethods_t *methods;
|
||||
};
|
||||
|
||||
#define ISCAPI_TIMER_MAGIC ISC_MAGIC('A','t','m','r')
|
||||
|
||||
+1
-15
@@ -77,21 +77,7 @@ isc_lib_initmsgcat(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static isc_once_t register_once = ISC_ONCE_INIT;
|
||||
|
||||
static void
|
||||
do_register(void) {
|
||||
isc_bind9 = false;
|
||||
|
||||
RUNTIME_CHECK(isc__mem_register() == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc__app_register() == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc__task_register() == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc__socket_register() == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc__timer_register() == ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
void
|
||||
isc_lib_register(void) {
|
||||
RUNTIME_CHECK(isc_once_do(®ister_once, do_register)
|
||||
== ISC_R_SUCCESS);
|
||||
isc_bind9 = false;
|
||||
}
|
||||
|
||||
+31
-537
@@ -110,7 +110,6 @@ static ISC_LIST(isc__mem_t) contexts;
|
||||
|
||||
static isc_once_t once = ISC_ONCE_INIT;
|
||||
static isc_mutex_t contextslock;
|
||||
static isc_mutex_t createlock;
|
||||
|
||||
/*%
|
||||
* Total size of lost memory due to a bug of external library.
|
||||
@@ -217,163 +216,6 @@ struct isc__mempool {
|
||||
static void
|
||||
print_active(isc__mem_t *ctx, FILE *out);
|
||||
|
||||
#endif /* ISC_MEM_TRACKLINES */
|
||||
|
||||
/*%
|
||||
* The following are intended for internal use (indicated by "isc__"
|
||||
* prefix) but are not declared as static, allowing direct access
|
||||
* from unit tests, etc.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__mem_create2(size_t init_max_size, size_t target_size,
|
||||
isc_mem_t **ctxp, unsigned int flags);
|
||||
void
|
||||
isc__mem_attach(isc_mem_t *source, isc_mem_t **targetp);
|
||||
void
|
||||
isc__mem_detach(isc_mem_t **ctxp);
|
||||
void
|
||||
isc___mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG);
|
||||
void
|
||||
isc__mem_destroy(isc_mem_t **ctxp);
|
||||
void *
|
||||
isc___mem_get(isc_mem_t *ctx, size_t size FLARG);
|
||||
void
|
||||
isc___mem_put(isc_mem_t *ctx, void *ptr, size_t size FLARG);
|
||||
void
|
||||
isc__mem_stats(isc_mem_t *ctx, FILE *out);
|
||||
void *
|
||||
isc___mem_allocate(isc_mem_t *ctx, size_t size FLARG);
|
||||
void *
|
||||
isc___mem_reallocate(isc_mem_t *ctx, void *ptr, size_t size FLARG);
|
||||
void
|
||||
isc___mem_free(isc_mem_t *ctx, void *ptr FLARG);
|
||||
char *
|
||||
isc___mem_strdup(isc_mem_t *mctx, const char *s FLARG);
|
||||
void
|
||||
isc__mem_setdestroycheck(isc_mem_t *ctx, bool flag);
|
||||
void
|
||||
isc__mem_setquota(isc_mem_t *ctx, size_t quota);
|
||||
size_t
|
||||
isc__mem_getquota(isc_mem_t *ctx);
|
||||
size_t
|
||||
isc__mem_inuse(isc_mem_t *ctx);
|
||||
size_t
|
||||
isc__mem_maxinuse(isc_mem_t *ctx);
|
||||
size_t
|
||||
isc__mem_total(isc_mem_t *ctx);
|
||||
bool
|
||||
isc__mem_isovermem(isc_mem_t *ctx);
|
||||
void
|
||||
isc__mem_setwater(isc_mem_t *ctx, isc_mem_water_t water, void *water_arg,
|
||||
size_t hiwater, size_t lowater);
|
||||
void
|
||||
isc__mem_waterack(isc_mem_t *ctx0, int flag);
|
||||
void
|
||||
isc__mem_setname(isc_mem_t *ctx, const char *name, void *tag);
|
||||
const char *
|
||||
isc__mem_getname(isc_mem_t *ctx);
|
||||
void *
|
||||
isc__mem_gettag(isc_mem_t *ctx);
|
||||
isc_result_t
|
||||
isc__mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp);
|
||||
void
|
||||
isc__mempool_setname(isc_mempool_t *mpctx, const char *name);
|
||||
void
|
||||
isc__mempool_destroy(isc_mempool_t **mpctxp);
|
||||
void
|
||||
isc__mempool_associatelock(isc_mempool_t *mpctx, isc_mutex_t *lock);
|
||||
void *
|
||||
isc___mempool_get(isc_mempool_t *mpctx FLARG);
|
||||
void
|
||||
isc___mempool_put(isc_mempool_t *mpctx, void *mem FLARG);
|
||||
void
|
||||
isc__mempool_setfreemax(isc_mempool_t *mpctx, unsigned int limit);
|
||||
unsigned int
|
||||
isc__mempool_getfreemax(isc_mempool_t *mpctx);
|
||||
unsigned int
|
||||
isc__mempool_getfreecount(isc_mempool_t *mpctx);
|
||||
void
|
||||
isc__mempool_setmaxalloc(isc_mempool_t *mpctx, unsigned int limit);
|
||||
unsigned int
|
||||
isc__mempool_getmaxalloc(isc_mempool_t *mpctx);
|
||||
unsigned int
|
||||
isc__mempool_getallocated(isc_mempool_t *mpctx);
|
||||
void
|
||||
isc__mempool_setfillcount(isc_mempool_t *mpctx, unsigned int limit);
|
||||
unsigned int
|
||||
isc__mempool_getfillcount(isc_mempool_t *mpctx);
|
||||
void
|
||||
isc__mem_printactive(isc_mem_t *ctx0, FILE *file);
|
||||
unsigned int
|
||||
isc__mem_references(isc_mem_t *ctx0);
|
||||
|
||||
static struct isc__memmethods {
|
||||
isc_memmethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *createx, *create, *create2, *stats,
|
||||
*setquota, *getquota, *setname, *getname, *gettag;
|
||||
} memmethods = {
|
||||
{
|
||||
isc__mem_attach,
|
||||
isc__mem_detach,
|
||||
isc__mem_destroy,
|
||||
isc___mem_get,
|
||||
isc___mem_put,
|
||||
isc___mem_putanddetach,
|
||||
isc___mem_allocate,
|
||||
isc___mem_reallocate,
|
||||
isc___mem_strdup,
|
||||
isc___mem_free,
|
||||
isc__mem_setdestroycheck,
|
||||
isc__mem_setwater,
|
||||
isc__mem_waterack,
|
||||
isc__mem_inuse,
|
||||
isc__mem_maxinuse,
|
||||
isc__mem_total,
|
||||
isc__mem_isovermem,
|
||||
isc__mempool_create
|
||||
},
|
||||
(void *)isc_mem_createx,
|
||||
(void *)isc_mem_create,
|
||||
(void *)isc_mem_create2,
|
||||
(void *)isc_mem_stats,
|
||||
(void *)isc_mem_setquota,
|
||||
(void *)isc_mem_getquota,
|
||||
(void *)isc_mem_setname,
|
||||
(void *)isc_mem_getname,
|
||||
(void *)isc_mem_gettag
|
||||
};
|
||||
|
||||
static struct isc__mempoolmethods {
|
||||
isc_mempoolmethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *getfreemax, *getfreecount, *getmaxalloc, *getfillcount;
|
||||
} mempoolmethods = {
|
||||
{
|
||||
isc__mempool_destroy,
|
||||
isc___mempool_get,
|
||||
isc___mempool_put,
|
||||
isc__mempool_getallocated,
|
||||
isc__mempool_setmaxalloc,
|
||||
isc__mempool_setfreemax,
|
||||
isc__mempool_setname,
|
||||
isc__mempool_associatelock,
|
||||
isc__mempool_setfillcount
|
||||
},
|
||||
(void *)isc_mempool_getfreemax,
|
||||
(void *)isc_mempool_getfreecount,
|
||||
(void *)isc_mempool_getmaxalloc,
|
||||
(void *)isc_mempool_getfillcount
|
||||
};
|
||||
|
||||
#if ISC_MEM_TRACKLINES
|
||||
/*!
|
||||
* mctx must be locked.
|
||||
*/
|
||||
@@ -852,7 +694,6 @@ default_memfree(void *arg, void *ptr) {
|
||||
|
||||
static void
|
||||
initialize_action(void) {
|
||||
RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
|
||||
RUNTIME_CHECK(isc_mutex_init(&contextslock) == ISC_R_SUCCESS);
|
||||
ISC_LIST_INIT(contexts);
|
||||
totallost = 0;
|
||||
@@ -922,7 +763,6 @@ isc_mem_createx2(size_t init_max_size, size_t target_size,
|
||||
ctx->water_arg = NULL;
|
||||
ctx->common.impmagic = MEM_MAGIC;
|
||||
ctx->common.magic = ISCAPI_MCTX_MAGIC;
|
||||
ctx->common.methods = (isc_memmethods_t *)&memmethods;
|
||||
ctx->memalloc = memalloc;
|
||||
ctx->memfree = memfree;
|
||||
ctx->arg = arg;
|
||||
@@ -1092,7 +932,7 @@ destroy(isc__mem_t *ctx) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_attach(isc_mem_t *source0, isc_mem_t **targetp) {
|
||||
isc_mem_attach(isc_mem_t *source0, isc_mem_t **targetp) {
|
||||
isc__mem_t *source = (isc__mem_t *)source0;
|
||||
|
||||
REQUIRE(VALID_CONTEXT(source));
|
||||
@@ -1106,7 +946,7 @@ isc__mem_attach(isc_mem_t *source0, isc_mem_t **targetp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_detach(isc_mem_t **ctxp) {
|
||||
isc_mem_detach(isc_mem_t **ctxp) {
|
||||
isc__mem_t *ctx;
|
||||
bool want_destroy = false;
|
||||
|
||||
@@ -1138,7 +978,7 @@ isc__mem_detach(isc_mem_t **ctxp) {
|
||||
*/
|
||||
|
||||
void
|
||||
isc___mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG) {
|
||||
isc__mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG) {
|
||||
isc__mem_t *ctx;
|
||||
bool want_destroy = false;
|
||||
size_info *si;
|
||||
@@ -1201,7 +1041,7 @@ isc___mem_putanddetach(isc_mem_t **ctxp, void *ptr, size_t size FLARG) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_destroy(isc_mem_t **ctxp) {
|
||||
isc_mem_destroy(isc_mem_t **ctxp) {
|
||||
isc__mem_t *ctx;
|
||||
|
||||
/*
|
||||
@@ -1228,7 +1068,7 @@ isc__mem_destroy(isc_mem_t **ctxp) {
|
||||
}
|
||||
|
||||
void *
|
||||
isc___mem_get(isc_mem_t *ctx0, size_t size FLARG) {
|
||||
isc__mem_get(isc_mem_t *ctx0, size_t size FLARG) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
void *ptr;
|
||||
bool call_water = false;
|
||||
@@ -1272,7 +1112,7 @@ isc___mem_get(isc_mem_t *ctx0, size_t size FLARG) {
|
||||
}
|
||||
|
||||
void
|
||||
isc___mem_put(isc_mem_t *ctx0, void *ptr, size_t size FLARG) {
|
||||
isc__mem_put(isc_mem_t *ctx0, void *ptr, size_t size FLARG) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
bool call_water = false;
|
||||
size_info *si;
|
||||
@@ -1324,7 +1164,7 @@ isc___mem_put(isc_mem_t *ctx0, void *ptr, size_t size FLARG) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_waterack(isc_mem_t *ctx0, int flag) {
|
||||
isc_mem_waterack(isc_mem_t *ctx0, int flag) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_CONTEXT(ctx));
|
||||
@@ -1486,7 +1326,7 @@ mem_allocateunlocked(isc_mem_t *ctx0, size_t size) {
|
||||
}
|
||||
|
||||
void *
|
||||
isc___mem_allocate(isc_mem_t *ctx0, size_t size FLARG) {
|
||||
isc__mem_allocate(isc_mem_t *ctx0, size_t size FLARG) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
size_info *si;
|
||||
bool call_water = false;
|
||||
@@ -1526,7 +1366,7 @@ isc___mem_allocate(isc_mem_t *ctx0, size_t size FLARG) {
|
||||
}
|
||||
|
||||
void *
|
||||
isc___mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) {
|
||||
isc__mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
void *new_ptr = NULL;
|
||||
size_t oldsize, copysize;
|
||||
@@ -1567,7 +1407,7 @@ isc___mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) {
|
||||
}
|
||||
|
||||
void
|
||||
isc___mem_free(isc_mem_t *ctx0, void *ptr FLARG) {
|
||||
isc__mem_free(isc_mem_t *ctx0, void *ptr FLARG) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
size_info *si;
|
||||
size_t size;
|
||||
@@ -1625,7 +1465,7 @@ isc___mem_free(isc_mem_t *ctx0, void *ptr FLARG) {
|
||||
*/
|
||||
|
||||
char *
|
||||
isc___mem_strdup(isc_mem_t *mctx0, const char *s FLARG) {
|
||||
isc__mem_strdup(isc_mem_t *mctx0, const char *s FLARG) {
|
||||
isc__mem_t *mctx = (isc__mem_t *)mctx0;
|
||||
size_t len;
|
||||
char *ns;
|
||||
@@ -1644,7 +1484,7 @@ isc___mem_strdup(isc_mem_t *mctx0, const char *s FLARG) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_setdestroycheck(isc_mem_t *ctx0, bool flag) {
|
||||
isc_mem_setdestroycheck(isc_mem_t *ctx0, bool flag) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_CONTEXT(ctx));
|
||||
@@ -1687,7 +1527,7 @@ isc_mem_getquota(isc_mem_t *ctx0) {
|
||||
}
|
||||
|
||||
size_t
|
||||
isc__mem_inuse(isc_mem_t *ctx0) {
|
||||
isc_mem_inuse(isc_mem_t *ctx0) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
size_t inuse;
|
||||
|
||||
@@ -1702,7 +1542,7 @@ isc__mem_inuse(isc_mem_t *ctx0) {
|
||||
}
|
||||
|
||||
size_t
|
||||
isc__mem_maxinuse(isc_mem_t *ctx0) {
|
||||
isc_mem_maxinuse(isc_mem_t *ctx0) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
size_t maxinuse;
|
||||
|
||||
@@ -1717,7 +1557,7 @@ isc__mem_maxinuse(isc_mem_t *ctx0) {
|
||||
}
|
||||
|
||||
size_t
|
||||
isc__mem_total(isc_mem_t *ctx0) {
|
||||
isc_mem_total(isc_mem_t *ctx0) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
size_t total;
|
||||
|
||||
@@ -1732,7 +1572,7 @@ isc__mem_total(isc_mem_t *ctx0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg,
|
||||
isc_mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg,
|
||||
size_t hiwater, size_t lowater)
|
||||
{
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
@@ -1769,7 +1609,7 @@ isc__mem_setwater(isc_mem_t *ctx0, isc_mem_water_t water, void *water_arg,
|
||||
}
|
||||
|
||||
bool
|
||||
isc__mem_isovermem(isc_mem_t *ctx0) {
|
||||
isc_mem_isovermem(isc_mem_t *ctx0) {
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_CONTEXT(ctx));
|
||||
@@ -1820,7 +1660,7 @@ isc_mem_gettag(isc_mem_t *ctx0) {
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) {
|
||||
isc_mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) {
|
||||
isc__mem_t *mctx = (isc__mem_t *)mctx0;
|
||||
isc__mempool_t *mpctx;
|
||||
|
||||
@@ -1836,17 +1676,10 @@ isc__mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) {
|
||||
if (mpctx == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
|
||||
mpctx->common.methods = (isc_mempoolmethods_t *)&mempoolmethods;
|
||||
mpctx->common.impmagic = MEMPOOL_MAGIC;
|
||||
mpctx->common.magic = ISCAPI_MPOOL_MAGIC;
|
||||
mpctx->lock = NULL;
|
||||
mpctx->mctx = mctx;
|
||||
/*
|
||||
* Mempools are stored as a linked list of element.
|
||||
*/
|
||||
if (size < sizeof(element)) {
|
||||
size = sizeof(element);
|
||||
}
|
||||
mpctx->size = size;
|
||||
mpctx->maxalloc = UINT_MAX;
|
||||
mpctx->allocated = 0;
|
||||
@@ -1870,7 +1703,7 @@ isc__mempool_create(isc_mem_t *mctx0, size_t size, isc_mempool_t **mpctxp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mempool_setname(isc_mempool_t *mpctx0, const char *name) {
|
||||
isc_mempool_setname(isc_mempool_t *mpctx0, const char *name) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
|
||||
REQUIRE(name != NULL);
|
||||
@@ -1891,7 +1724,7 @@ isc__mempool_setname(isc_mempool_t *mpctx0, const char *name) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mempool_destroy(isc_mempool_t **mpctxp) {
|
||||
isc_mempool_destroy(isc_mempool_t **mpctxp) {
|
||||
isc__mempool_t *mpctx;
|
||||
isc__mem_t *mctx;
|
||||
isc_mutex_t *lock;
|
||||
@@ -1955,7 +1788,7 @@ isc__mempool_destroy(isc_mempool_t **mpctxp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mempool_associatelock(isc_mempool_t *mpctx0, isc_mutex_t *lock) {
|
||||
isc_mempool_associatelock(isc_mempool_t *mpctx0, isc_mutex_t *lock) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
|
||||
REQUIRE(VALID_MEMPOOL(mpctx));
|
||||
@@ -1966,7 +1799,7 @@ isc__mempool_associatelock(isc_mempool_t *mpctx0, isc_mutex_t *lock) {
|
||||
}
|
||||
|
||||
void *
|
||||
isc___mempool_get(isc_mempool_t *mpctx0 FLARG) {
|
||||
isc__mempool_get(isc_mempool_t *mpctx0 FLARG) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
element *item;
|
||||
isc__mem_t *mctx;
|
||||
@@ -2042,7 +1875,7 @@ isc___mempool_get(isc_mempool_t *mpctx0 FLARG) {
|
||||
|
||||
/* coverity[+free : arg-1] */
|
||||
void
|
||||
isc___mempool_put(isc_mempool_t *mpctx0, void *mem FLARG) {
|
||||
isc__mempool_put(isc_mempool_t *mpctx0, void *mem FLARG) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
isc__mem_t *mctx;
|
||||
element *item;
|
||||
@@ -2100,7 +1933,7 @@ isc___mempool_put(isc_mempool_t *mpctx0, void *mem FLARG) {
|
||||
*/
|
||||
|
||||
void
|
||||
isc__mempool_setfreemax(isc_mempool_t *mpctx0, unsigned int limit) {
|
||||
isc_mempool_setfreemax(isc_mempool_t *mpctx0, unsigned int limit) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
|
||||
REQUIRE(VALID_MEMPOOL(mpctx));
|
||||
@@ -2151,7 +1984,7 @@ isc_mempool_getfreecount(isc_mempool_t *mpctx0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mempool_setmaxalloc(isc_mempool_t *mpctx0, unsigned int limit) {
|
||||
isc_mempool_setmaxalloc(isc_mempool_t *mpctx0, unsigned int limit) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
|
||||
REQUIRE(limit > 0);
|
||||
@@ -2186,7 +2019,7 @@ isc_mempool_getmaxalloc(isc_mempool_t *mpctx0) {
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc__mempool_getallocated(isc_mempool_t *mpctx0) {
|
||||
isc_mempool_getallocated(isc_mempool_t *mpctx0) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
unsigned int allocated;
|
||||
|
||||
@@ -2204,7 +2037,7 @@ isc__mempool_getallocated(isc_mempool_t *mpctx0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__mempool_setfillcount(isc_mempool_t *mpctx0, unsigned int limit) {
|
||||
isc_mempool_setfillcount(isc_mempool_t *mpctx0, unsigned int limit) {
|
||||
isc__mempool_t *mpctx = (isc__mempool_t *)mpctx0;
|
||||
|
||||
REQUIRE(limit > 0);
|
||||
@@ -2238,13 +2071,8 @@ isc_mempool_getfillcount(isc_mempool_t *mpctx0) {
|
||||
return (fillcount);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__mem_register(void) {
|
||||
return (isc_mem_register(isc_mem_create2));
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_printactive(isc_mem_t *ctx0, FILE *file) {
|
||||
isc_mem_printactive(isc_mem_t *ctx0, FILE *file) {
|
||||
#if ISC_MEM_TRACKLINES
|
||||
isc__mem_t *ctx = (isc__mem_t *)ctx0;
|
||||
|
||||
@@ -2689,352 +2517,18 @@ isc_mem_renderjson(json_object *memobj) {
|
||||
}
|
||||
#endif /* HAVE_JSON */
|
||||
|
||||
static isc_memcreatefunc_t mem_createfunc = NULL;
|
||||
|
||||
isc_result_t
|
||||
isc_mem_register(isc_memcreatefunc_t createfunc) {
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS);
|
||||
|
||||
LOCK(&createlock);
|
||||
if (mem_createfunc == NULL)
|
||||
mem_createfunc = createfunc;
|
||||
else
|
||||
result = ISC_R_EXISTS;
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
|
||||
isc_result_t
|
||||
isc__mem_create2(size_t init_max_size, size_t target_size, isc_mem_t **mctxp,
|
||||
unsigned int flags)
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(mem_createfunc != NULL);
|
||||
result = (*mem_createfunc)(init_max_size, target_size, mctxp, flags);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_mem_create(size_t init_max_size, size_t target_size, isc_mem_t **mctxp) {
|
||||
isc_result_t result;
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc_mem_createx2(init_max_size, target_size,
|
||||
default_memalloc, default_memfree,
|
||||
NULL, mctxp, isc_mem_defaultflags));
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(mem_createfunc != NULL);
|
||||
result = (*mem_createfunc)(init_max_size, target_size, mctxp,
|
||||
isc_mem_defaultflags);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
return (isc_mem_createx2(init_max_size, target_size,
|
||||
default_memalloc, default_memfree,
|
||||
NULL, mctxp, isc_mem_defaultflags));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_mem_create2(size_t init_max_size, size_t target_size, isc_mem_t **mctxp,
|
||||
unsigned int flags)
|
||||
{
|
||||
if (isc_bind9)
|
||||
return (isc_mem_createx2(init_max_size, target_size,
|
||||
default_memalloc, default_memfree,
|
||||
NULL, mctxp, flags));
|
||||
|
||||
return (isc_mem_createx2(init_max_size, target_size,
|
||||
default_memalloc, default_memfree,
|
||||
NULL, mctxp, flags));
|
||||
}
|
||||
|
||||
void
|
||||
isc_mem_attach(isc_mem_t *source, isc_mem_t **targetp) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(source));
|
||||
REQUIRE(targetp != NULL && *targetp == NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mem_attach(source, targetp);
|
||||
else
|
||||
source->methods->attach(source, targetp);
|
||||
|
||||
ENSURE(*targetp == source);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mem_detach(isc_mem_t **mctxp) {
|
||||
REQUIRE(mctxp != NULL && ISCAPI_MCTX_VALID(*mctxp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mem_detach(mctxp);
|
||||
else
|
||||
(*mctxp)->methods->detach(mctxp);
|
||||
|
||||
ENSURE(*mctxp == NULL);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mem_destroy(isc_mem_t **mctxp) {
|
||||
REQUIRE(mctxp != NULL && ISCAPI_MCTX_VALID(*mctxp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mem_destroy(mctxp);
|
||||
else
|
||||
(*mctxp)->methods->destroy(mctxp);
|
||||
|
||||
ENSURE(*mctxp == NULL);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mem_setdestroycheck(isc_mem_t *mctx, bool flag) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
mctx->methods->setdestroycheck(mctx, flag);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mem_setwater(isc_mem_t *ctx, isc_mem_water_t water, void *water_arg,
|
||||
size_t hiwater, size_t lowater)
|
||||
{
|
||||
REQUIRE(ISCAPI_MCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mem_setwater(ctx, water, water_arg, hiwater, lowater);
|
||||
else
|
||||
ctx->methods->setwater(ctx, water, water_arg, hiwater, lowater);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mem_waterack(isc_mem_t *ctx, int flag) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(ctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mem_waterack(ctx, flag);
|
||||
else
|
||||
ctx->methods->waterack(ctx, flag);
|
||||
}
|
||||
|
||||
size_t
|
||||
isc_mem_inuse(isc_mem_t *mctx) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__mem_inuse(mctx));
|
||||
|
||||
return (mctx->methods->inuse(mctx));
|
||||
}
|
||||
|
||||
size_t
|
||||
isc_mem_maxinuse(isc_mem_t *mctx) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__mem_maxinuse(mctx));
|
||||
|
||||
return (mctx->methods->maxinuse(mctx));
|
||||
}
|
||||
|
||||
size_t
|
||||
isc_mem_total(isc_mem_t *mctx) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__mem_total(mctx));
|
||||
|
||||
return (mctx->methods->total(mctx));
|
||||
}
|
||||
|
||||
bool
|
||||
isc_mem_isovermem(isc_mem_t *mctx) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__mem_isovermem(mctx));
|
||||
|
||||
return (mctx->methods->isovermem(mctx));
|
||||
}
|
||||
|
||||
|
||||
isc_result_t
|
||||
isc_mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
return (mctx->methods->mpcreate(mctx, size, mpctxp));
|
||||
}
|
||||
|
||||
void
|
||||
isc_mempool_destroy(isc_mempool_t **mpctxp) {
|
||||
REQUIRE(mpctxp != NULL && ISCAPI_MPOOL_VALID(*mpctxp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mempool_destroy(mpctxp);
|
||||
else
|
||||
(*mpctxp)->methods->destroy(mpctxp);
|
||||
|
||||
ENSURE(*mpctxp == NULL);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc_mempool_getallocated(isc_mempool_t *mpctx) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__mempool_getallocated(mpctx));
|
||||
|
||||
return (mpctx->methods->getallocated(mpctx));
|
||||
}
|
||||
|
||||
void
|
||||
isc_mempool_setmaxalloc(isc_mempool_t *mpctx, unsigned int limit) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mempool_setmaxalloc(mpctx, limit);
|
||||
else
|
||||
mpctx->methods->setmaxalloc(mpctx, limit);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mempool_setfreemax(isc_mempool_t *mpctx, unsigned int limit) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mempool_setfreemax(mpctx, limit);
|
||||
else
|
||||
mpctx->methods->setfreemax(mpctx, limit);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mempool_setname(isc_mempool_t *mpctx, const char *name) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mempool_setname(mpctx, name);
|
||||
else
|
||||
mpctx->methods->setname(mpctx, name);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mempool_associatelock(isc_mempool_t *mpctx, isc_mutex_t *lock) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mempool_associatelock(mpctx, lock);
|
||||
else
|
||||
mpctx->methods->associatelock(mpctx, lock);
|
||||
}
|
||||
|
||||
void
|
||||
isc_mempool_setfillcount(isc_mempool_t *mpctx, unsigned int limit) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__mempool_setfillcount(mpctx, limit);
|
||||
else
|
||||
mpctx->methods->setfillcount(mpctx, limit);
|
||||
}
|
||||
|
||||
void *
|
||||
isc__mem_get(isc_mem_t *mctx, size_t size FLARG) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc___mem_get(mctx, size FLARG_PASS));
|
||||
|
||||
return (mctx->methods->memget(mctx, size FLARG_PASS));
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_put(isc_mem_t *mctx, void *ptr, size_t size FLARG) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc___mem_put(mctx, ptr, size FLARG_PASS);
|
||||
else
|
||||
mctx->methods->memput(mctx, ptr, size FLARG_PASS);
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_putanddetach(isc_mem_t **mctxp, void *ptr, size_t size FLARG) {
|
||||
REQUIRE(mctxp != NULL && ISCAPI_MCTX_VALID(*mctxp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc___mem_putanddetach(mctxp, ptr, size FLARG_PASS);
|
||||
else
|
||||
(*mctxp)->methods->memputanddetach(mctxp, ptr, size FLARG_PASS);
|
||||
|
||||
/*
|
||||
* XXX: We cannot always ensure *mctxp == NULL here
|
||||
* (see lib/isc/mem.c).
|
||||
*/
|
||||
}
|
||||
|
||||
void *
|
||||
isc__mem_allocate(isc_mem_t *mctx, size_t size FLARG) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc___mem_allocate(mctx, size FLARG_PASS));
|
||||
|
||||
return (mctx->methods->memallocate(mctx, size FLARG_PASS));
|
||||
}
|
||||
|
||||
void *
|
||||
isc__mem_reallocate(isc_mem_t *mctx, void *ptr, size_t size FLARG) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc___mem_reallocate(mctx, ptr, size FLARG_PASS));
|
||||
|
||||
return (mctx->methods->memreallocate(mctx, ptr, size FLARG_PASS));
|
||||
}
|
||||
|
||||
char *
|
||||
isc__mem_strdup(isc_mem_t *mctx, const char *s FLARG) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc___mem_strdup(mctx, s FLARG_PASS));
|
||||
|
||||
return (mctx->methods->memstrdup(mctx, s FLARG_PASS));
|
||||
}
|
||||
|
||||
void
|
||||
isc__mem_free(isc_mem_t *mctx, void *ptr FLARG) {
|
||||
REQUIRE(ISCAPI_MCTX_VALID(mctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc___mem_free(mctx, ptr FLARG_PASS);
|
||||
else
|
||||
mctx->methods->memfree(mctx, ptr FLARG_PASS);
|
||||
}
|
||||
|
||||
void *
|
||||
isc__mempool_get(isc_mempool_t *mpctx FLARG) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc___mempool_get(mpctx FLARG_PASS));
|
||||
|
||||
return (mpctx->methods->get(mpctx FLARG_PASS));
|
||||
}
|
||||
|
||||
void
|
||||
isc__mempool_put(isc_mempool_t *mpctx, void *mem FLARG) {
|
||||
REQUIRE(ISCAPI_MPOOL_VALID(mpctx));
|
||||
|
||||
if (isc_bind9)
|
||||
isc___mempool_put(mpctx, mem FLARG_PASS);
|
||||
else
|
||||
mpctx->methods->put(mpctx, mem FLARG_PASS);
|
||||
}
|
||||
|
||||
@@ -1,400 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/magic.h>
|
||||
#include <isc/mutex.h>
|
||||
#include <isc/once.h>
|
||||
#include <isc/socket.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
static isc_mutex_t createlock;
|
||||
static isc_once_t once = ISC_ONCE_INIT;
|
||||
static isc_socketmgrcreatefunc_t socketmgr_createfunc = NULL;
|
||||
|
||||
static void
|
||||
initialize(void) {
|
||||
RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_register(isc_socketmgrcreatefunc_t createfunc) {
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
|
||||
|
||||
LOCK(&createlock);
|
||||
if (socketmgr_createfunc == NULL)
|
||||
socketmgr_createfunc = createfunc;
|
||||
else
|
||||
result = ISC_R_EXISTS;
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
|
||||
isc_socketmgr_t **managerp)
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(socketmgr_createfunc != NULL);
|
||||
result = (*socketmgr_createfunc)(mctx, managerp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
isc_appctx_setsocketmgr(actx, *managerp);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
|
||||
isc_result_t result;
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socketmgr_create(mctx, managerp));
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(socketmgr_createfunc != NULL);
|
||||
result = (*socketmgr_createfunc)(mctx, managerp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
void
|
||||
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
|
||||
REQUIRE(managerp != NULL && ISCAPI_SOCKETMGR_VALID(*managerp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__socketmgr_destroy(managerp);
|
||||
else
|
||||
(*managerp)->methods->destroy(managerp);
|
||||
|
||||
ENSURE(*managerp == NULL);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
|
||||
isc_socket_t **socketp)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKETMGR_VALID(manager));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_create(manager, pf, type, socketp));
|
||||
|
||||
return (manager->methods->socketcreate(manager, pf, type, socketp));
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_attach(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
REQUIRE(socketp != NULL && *socketp == NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__socket_attach(sock, socketp);
|
||||
else
|
||||
sock->methods->attach(sock, socketp);
|
||||
|
||||
ENSURE(*socketp == sock);
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_detach(isc_socket_t **socketp) {
|
||||
REQUIRE(socketp != NULL && ISCAPI_SOCKET_VALID(*socketp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__socket_detach(socketp);
|
||||
else
|
||||
(*socketp)->methods->detach(socketp);
|
||||
|
||||
ENSURE(*socketp == NULL);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr,
|
||||
unsigned int options)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_bind(sock, sockaddr, options));
|
||||
|
||||
return (sock->methods->bind(sock, sockaddr, options));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_sendto(isc_socket_t *sock, isc_region_t *region, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_sendto(sock, region, task,
|
||||
action, arg, address, pktinfo));
|
||||
|
||||
return (sock->methods->sendto(sock, region, task, action, arg, address,
|
||||
pktinfo));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_connect(sock, addr, task, action, arg));
|
||||
|
||||
return (sock->methods->connect(sock, addr, task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_recv(isc_socket_t *sock, isc_region_t *region, unsigned int minimum,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_recv(sock, region, minimum,
|
||||
task, action, arg));
|
||||
|
||||
return (sock->methods->recv(sock, region, minimum, task, action, arg));
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__socket_cancel(sock, task, how);
|
||||
else
|
||||
sock->methods->cancel(sock, task, how);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_getsockname(sock, addressp));
|
||||
|
||||
return (sock->methods->getsockname(sock, addressp));
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_ipv6only(isc_socket_t *sock, bool yes) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__socket_ipv6only(sock, yes);
|
||||
else
|
||||
sock->methods->ipv6only(sock, yes);
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
sock->methods->dscp(sock, dscp);
|
||||
}
|
||||
|
||||
isc_sockettype_t
|
||||
isc_socket_gettype(isc_socket_t *sock) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_gettype(sock));
|
||||
|
||||
return (sock->methods->gettype(sock));
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_setname(isc_socket_t *sock, const char *name, void *tag) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
UNUSED(sock); /* in case REQUIRE() is empty */
|
||||
UNUSED(name);
|
||||
UNUSED(tag);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_fdwatchcreate(isc_socketmgr_t *manager, int fd, int flags,
|
||||
isc_sockfdwatch_t callback, void *cbarg,
|
||||
isc_task_t *task, isc_socket_t **socketp)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKETMGR_VALID(manager));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_fdwatchcreate(manager, fd, flags,
|
||||
callback, cbarg,
|
||||
task, socketp));
|
||||
|
||||
return (manager->methods->fdwatchcreate(manager, fd, flags,
|
||||
callback, cbarg, task,
|
||||
socketp));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_fdwatchpoke(isc_socket_t *sock, int flags)
|
||||
{
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_fdwatchpoke(sock, flags));
|
||||
|
||||
return (sock->methods->fdwatchpoke(sock, flags));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_dup(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
REQUIRE(socketp != NULL && *socketp == NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_dup(sock, socketp));
|
||||
|
||||
return (sock->methods->dup(sock, socketp));
|
||||
}
|
||||
|
||||
int
|
||||
isc_socket_getfd(isc_socket_t *sock) {
|
||||
REQUIRE(ISCAPI_SOCKET_VALID(sock));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__socket_getfd(sock));
|
||||
|
||||
return (sock->methods->getfd(sock));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_open(isc_socket_t *sock) {
|
||||
return (isc__socket_open(sock));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_close(isc_socket_t *sock) {
|
||||
return (isc__socket_close(sock));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
unsigned int maxsocks)
|
||||
{
|
||||
return (isc__socketmgr_create2(mctx, managerp, maxsocks));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
return (isc__socket_recvv(sock, buflist, minimum, task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_recv2(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
{
|
||||
return (isc__socket_recv2(sock, region, minimum, task, event, flags));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
return (isc__socket_send(sock, region, task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
return (isc__socket_sendv(sock, buflist, task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
|
||||
{
|
||||
return (isc__socket_sendtov(sock, buflist, task, action, arg,
|
||||
address, pktinfo));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
unsigned int flags)
|
||||
{
|
||||
return (isc__socket_sendtov2(sock, buflist, task, action, arg,
|
||||
address, pktinfo, flags));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
{
|
||||
return (isc__socket_sendto2(sock, region, task, address, pktinfo,
|
||||
event, flags));
|
||||
}
|
||||
|
||||
void
|
||||
isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
|
||||
isc__socket_cleanunix(sockaddr, active);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
|
||||
uint32_t owner, uint32_t group)
|
||||
{
|
||||
return (isc__socket_permunix(sockaddr, perm, owner, group));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_filter(isc_socket_t *sock, const char *filter) {
|
||||
return (isc__socket_filter(sock, filter));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_listen(isc_socket_t *sock, unsigned int backlog) {
|
||||
return (isc__socket_listen(sock, backlog));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_accept(isc_socket_t *sock, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
return (isc__socket_accept(sock, task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
return (isc__socket_getpeername(sock, addressp));
|
||||
}
|
||||
+47
-423
@@ -152,8 +152,14 @@ struct isc__taskmgr {
|
||||
isc__task_t *excl;
|
||||
};
|
||||
|
||||
void
|
||||
isc__taskmgr_pause(isc_taskmgr_t *manager0);
|
||||
void
|
||||
isc__taskmgr_resume(isc_taskmgr_t *manager0);
|
||||
|
||||
|
||||
#define DEFAULT_TASKMGR_QUANTUM 10
|
||||
#define DEFAULT_DEFAULT_QUANTUM 5
|
||||
#define DEFAULT_DEFAULT_QUANTUM 30
|
||||
#define FINISHED(m) ((m)->exiting && EMPTY((m)->tasks))
|
||||
|
||||
/*%
|
||||
@@ -162,71 +168,12 @@ struct isc__taskmgr {
|
||||
* unit tests etc.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum,
|
||||
isc_task_t **taskp);
|
||||
void
|
||||
isc__task_attach(isc_task_t *source0, isc_task_t **targetp);
|
||||
void
|
||||
isc__task_detach(isc_task_t **taskp);
|
||||
void
|
||||
isc__task_send(isc_task_t *task0, isc_event_t **eventp);
|
||||
void
|
||||
isc__task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp);
|
||||
unsigned int
|
||||
isc__task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first,
|
||||
isc_eventtype_t last, void *tag);
|
||||
unsigned int
|
||||
isc__task_purge(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
void *tag);
|
||||
bool
|
||||
isc_task_purgeevent(isc_task_t *task0, isc_event_t *event);
|
||||
unsigned int
|
||||
isc__task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first,
|
||||
isc_eventtype_t last, void *tag,
|
||||
isc_eventlist_t *events);
|
||||
unsigned int
|
||||
isc__task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
void *tag, isc_eventlist_t *events);
|
||||
isc_result_t
|
||||
isc__task_onshutdown(isc_task_t *task0, isc_taskaction_t action,
|
||||
void *arg);
|
||||
void
|
||||
isc__task_shutdown(isc_task_t *task0);
|
||||
void
|
||||
isc__task_destroy(isc_task_t **taskp);
|
||||
void
|
||||
isc__task_setname(isc_task_t *task0, const char *name, void *tag);
|
||||
const char *
|
||||
isc__task_getname(isc_task_t *task0);
|
||||
void *
|
||||
isc__task_gettag(isc_task_t *task0);
|
||||
void
|
||||
isc__task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t);
|
||||
void
|
||||
isc__task_getcurrenttimex(isc_task_t *task0, isc_time_t *t);
|
||||
isc_result_t
|
||||
isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
||||
unsigned int default_quantum, isc_taskmgr_t **managerp);
|
||||
void
|
||||
isc__taskmgr_destroy(isc_taskmgr_t **managerp);
|
||||
void
|
||||
isc_taskmgr_setexcltask(isc_taskmgr_t *mgr0, isc_task_t *task0);
|
||||
isc_result_t
|
||||
isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp);
|
||||
isc_result_t
|
||||
isc__task_beginexclusive(isc_task_t *task);
|
||||
void
|
||||
isc__task_endexclusive(isc_task_t *task0);
|
||||
void
|
||||
isc__task_setprivilege(isc_task_t *task0, bool priv);
|
||||
bool
|
||||
isc__task_privilege(isc_task_t *task0);
|
||||
void
|
||||
isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode);
|
||||
isc_taskmgrmode_t
|
||||
isc__taskmgr_mode(isc_taskmgr_t *manager0);
|
||||
|
||||
static inline bool
|
||||
empty_readyq(isc__taskmgr_t *manager);
|
||||
|
||||
@@ -236,49 +183,6 @@ pop_readyq(isc__taskmgr_t *manager);
|
||||
static inline void
|
||||
push_readyq(isc__taskmgr_t *manager, isc__task_t *task);
|
||||
|
||||
static struct isc__taskmethods {
|
||||
isc_taskmethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *purgeevent, *unsendrange, *getname, *gettag,
|
||||
*getcurrenttime, *getcurrenttimex;
|
||||
} taskmethods = {
|
||||
{
|
||||
isc__task_attach,
|
||||
isc__task_detach,
|
||||
isc__task_destroy,
|
||||
isc__task_send,
|
||||
isc__task_sendanddetach,
|
||||
isc__task_unsend,
|
||||
isc__task_onshutdown,
|
||||
isc__task_shutdown,
|
||||
isc__task_setname,
|
||||
isc__task_purge,
|
||||
isc__task_purgerange,
|
||||
isc__task_beginexclusive,
|
||||
isc__task_endexclusive,
|
||||
isc__task_setprivilege,
|
||||
isc__task_privilege
|
||||
},
|
||||
(void *)isc_task_purgeevent,
|
||||
(void *)isc__task_unsendrange,
|
||||
(void *)isc__task_getname,
|
||||
(void *)isc__task_gettag,
|
||||
(void *)isc__task_getcurrenttime,
|
||||
(void *)isc__task_getcurrenttimex
|
||||
};
|
||||
|
||||
static isc_taskmgrmethods_t taskmgrmethods = {
|
||||
isc__taskmgr_destroy,
|
||||
isc__taskmgr_setmode,
|
||||
isc__taskmgr_mode,
|
||||
isc__task_create,
|
||||
isc_taskmgr_setexcltask,
|
||||
isc_taskmgr_excltask
|
||||
};
|
||||
|
||||
/***
|
||||
*** Tasks.
|
||||
***/
|
||||
@@ -315,7 +219,7 @@ task_finished(isc__task_t *task) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum,
|
||||
isc_task_create(isc_taskmgr_t *manager0, unsigned int quantum,
|
||||
isc_task_t **taskp)
|
||||
{
|
||||
isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0;
|
||||
@@ -367,7 +271,6 @@ isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum,
|
||||
return (ISC_R_SHUTTINGDOWN);
|
||||
}
|
||||
|
||||
task->common.methods = (isc_taskmethods_t *)&taskmethods;
|
||||
task->common.magic = ISCAPI_TASK_MAGIC;
|
||||
task->common.impmagic = TASK_MAGIC;
|
||||
*taskp = (isc_task_t *)task;
|
||||
@@ -376,7 +279,7 @@ isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum,
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_attach(isc_task_t *source0, isc_task_t **targetp) {
|
||||
isc_task_attach(isc_task_t *source0, isc_task_t **targetp) {
|
||||
isc__task_t *source = (isc__task_t *)source0;
|
||||
|
||||
/*
|
||||
@@ -442,7 +345,7 @@ task_shutdown(isc__task_t *task) {
|
||||
static inline void
|
||||
task_ready(isc__task_t *task) {
|
||||
isc__taskmgr_t *manager = task->manager;
|
||||
bool has_privilege = isc__task_privilege((isc_task_t *) task);
|
||||
bool has_privilege = isc_task_privilege((isc_task_t *) task);
|
||||
|
||||
REQUIRE(VALID_MANAGER(manager));
|
||||
REQUIRE(task->state == task_state_ready);
|
||||
@@ -486,7 +389,7 @@ task_detach(isc__task_t *task) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_detach(isc_task_t **taskp) {
|
||||
isc_task_detach(isc_task_t **taskp) {
|
||||
isc__task_t *task;
|
||||
bool was_idle;
|
||||
|
||||
@@ -543,7 +446,7 @@ task_send(isc__task_t *task, isc_event_t **eventp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_send(isc_task_t *task0, isc_event_t **eventp) {
|
||||
isc_task_send(isc_task_t *task0, isc_event_t **eventp) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
bool was_idle;
|
||||
|
||||
@@ -585,7 +488,7 @@ isc__task_send(isc_task_t *task0, isc_event_t **eventp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) {
|
||||
isc_task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) {
|
||||
bool idle1, idle2;
|
||||
isc__task_t *task;
|
||||
|
||||
@@ -662,13 +565,14 @@ dequeue_events(isc__task_t *task, void *sender, isc_eventtype_t first,
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc__task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first,
|
||||
isc_task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first,
|
||||
isc_eventtype_t last, void *tag)
|
||||
{
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
unsigned int count;
|
||||
isc_eventlist_t events;
|
||||
isc_event_t *event, *next_event;
|
||||
REQUIRE(VALID_TASK(task));
|
||||
|
||||
/*
|
||||
* Purge events from a task's event queue.
|
||||
@@ -695,16 +599,17 @@ isc__task_purgerange(isc_task_t *task0, void *sender, isc_eventtype_t first,
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc__task_purge(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
isc_task_purge(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
void *tag)
|
||||
{
|
||||
/*
|
||||
* Purge events from a task's event queue.
|
||||
*/
|
||||
REQUIRE(VALID_TASK(task));
|
||||
|
||||
XTRACE("isc_task_purge");
|
||||
|
||||
return (isc__task_purgerange(task, sender, type, type, tag));
|
||||
return (isc_task_purgerange(task, sender, type, type, tag));
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -752,13 +657,14 @@ isc_task_purgeevent(isc_task_t *task0, isc_event_t *event) {
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc__task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first,
|
||||
isc_task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first,
|
||||
isc_eventtype_t last, void *tag,
|
||||
isc_eventlist_t *events)
|
||||
{
|
||||
/*
|
||||
* Remove events from a task's event queue.
|
||||
*/
|
||||
REQUIRE(VALID_TASK(task));
|
||||
|
||||
XTRACE("isc_task_unsendrange");
|
||||
|
||||
@@ -767,7 +673,7 @@ isc__task_unsendrange(isc_task_t *task, void *sender, isc_eventtype_t first,
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc__task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
isc_task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
void *tag, isc_eventlist_t *events)
|
||||
{
|
||||
/*
|
||||
@@ -781,7 +687,7 @@ isc__task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__task_onshutdown(isc_task_t *task0, isc_taskaction_t action,
|
||||
isc_task_onshutdown(isc_task_t *task0, isc_taskaction_t action,
|
||||
void *arg)
|
||||
{
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
@@ -821,7 +727,7 @@ isc__task_onshutdown(isc_task_t *task0, isc_taskaction_t action,
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_shutdown(isc_task_t *task0) {
|
||||
isc_task_shutdown(isc_task_t *task0) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
bool was_idle;
|
||||
|
||||
@@ -840,7 +746,7 @@ isc__task_shutdown(isc_task_t *task0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_destroy(isc_task_t **taskp) {
|
||||
isc_task_destroy(isc_task_t **taskp) {
|
||||
|
||||
/*
|
||||
* Destroy '*taskp'.
|
||||
@@ -853,7 +759,7 @@ isc__task_destroy(isc_task_t **taskp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_setname(isc_task_t *task0, const char *name, void *tag) {
|
||||
isc_task_setname(isc_task_t *task0, const char *name, void *tag) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
|
||||
/*
|
||||
@@ -868,8 +774,9 @@ isc__task_setname(isc_task_t *task0, const char *name, void *tag) {
|
||||
UNLOCK(&task->lock);
|
||||
}
|
||||
|
||||
|
||||
const char *
|
||||
isc__task_getname(isc_task_t *task0) {
|
||||
isc_task_getname(isc_task_t *task0) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
|
||||
REQUIRE(VALID_TASK(task));
|
||||
@@ -878,7 +785,7 @@ isc__task_getname(isc_task_t *task0) {
|
||||
}
|
||||
|
||||
void *
|
||||
isc__task_gettag(isc_task_t *task0) {
|
||||
isc_task_gettag(isc_task_t *task0) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
|
||||
REQUIRE(VALID_TASK(task));
|
||||
@@ -887,7 +794,7 @@ isc__task_gettag(isc_task_t *task0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t) {
|
||||
isc_task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
|
||||
REQUIRE(VALID_TASK(task));
|
||||
@@ -899,7 +806,7 @@ isc__task_getcurrenttime(isc_task_t *task0, isc_stdtime_t *t) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_getcurrenttimex(isc_task_t *task0, isc_time_t *t) {
|
||||
isc_task_getcurrenttimex(isc_task_t *task0, isc_time_t *t) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
|
||||
REQUIRE(VALID_TASK(task));
|
||||
@@ -1276,7 +1183,7 @@ manager_free(isc__taskmgr_t *manager) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
||||
isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
||||
unsigned int default_quantum, isc_taskmgr_t **managerp)
|
||||
{
|
||||
isc_result_t result;
|
||||
@@ -1293,7 +1200,6 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
||||
manager = isc_mem_get(mctx, sizeof(*manager));
|
||||
if (manager == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
manager->common.methods = &taskmgrmethods;
|
||||
manager->common.impmagic = TASK_MANAGER_MAGIC;
|
||||
manager->common.magic = ISCAPI_TASKMGR_MAGIC;
|
||||
manager->mode = isc_taskmgrmode_normal;
|
||||
@@ -1395,7 +1301,7 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
||||
}
|
||||
|
||||
void
|
||||
isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
|
||||
isc_taskmgr_destroy(isc_taskmgr_t **managerp) {
|
||||
isc__taskmgr_t *manager;
|
||||
isc__task_t *task;
|
||||
unsigned int i;
|
||||
@@ -1422,7 +1328,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
|
||||
*/
|
||||
LOCK(&manager->excl_lock);
|
||||
if (manager->excl != NULL)
|
||||
isc__task_detach((isc_task_t **) &manager->excl);
|
||||
isc_task_detach((isc_task_t **) &manager->excl);
|
||||
UNLOCK(&manager->excl_lock);
|
||||
|
||||
/*
|
||||
@@ -1479,7 +1385,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) {
|
||||
isc_taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) {
|
||||
isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0;
|
||||
|
||||
LOCK(&manager->lock);
|
||||
@@ -1488,7 +1394,7 @@ isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) {
|
||||
}
|
||||
|
||||
isc_taskmgrmode_t
|
||||
isc__taskmgr_mode(isc_taskmgr_t *manager0) {
|
||||
isc_taskmgr_mode(isc_taskmgr_t *manager0) {
|
||||
isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0;
|
||||
isc_taskmgrmode_t mode;
|
||||
LOCK(&manager->lock);
|
||||
@@ -1529,8 +1435,8 @@ isc_taskmgr_setexcltask(isc_taskmgr_t *mgr0, isc_task_t *task0) {
|
||||
REQUIRE(VALID_TASK(task));
|
||||
LOCK(&mgr->excl_lock);
|
||||
if (mgr->excl != NULL)
|
||||
isc__task_detach((isc_task_t **) &mgr->excl);
|
||||
isc__task_attach(task0, (isc_task_t **) &mgr->excl);
|
||||
isc_task_detach((isc_task_t **) &mgr->excl);
|
||||
isc_task_attach(task0, (isc_task_t **) &mgr->excl);
|
||||
UNLOCK(&mgr->excl_lock);
|
||||
}
|
||||
|
||||
@@ -1544,7 +1450,7 @@ isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp) {
|
||||
|
||||
LOCK(&mgr->excl_lock);
|
||||
if (mgr->excl != NULL)
|
||||
isc__task_attach((isc_task_t *) mgr->excl, taskp);
|
||||
isc_task_attach((isc_task_t *) mgr->excl, taskp);
|
||||
else
|
||||
result = ISC_R_NOTFOUND;
|
||||
UNLOCK(&mgr->excl_lock);
|
||||
@@ -1553,9 +1459,10 @@ isc_taskmgr_excltask(isc_taskmgr_t *mgr0, isc_task_t **taskp) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__task_beginexclusive(isc_task_t *task0) {
|
||||
isc_task_beginexclusive(isc_task_t *task0) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
isc__taskmgr_t *manager = task->manager;
|
||||
REQUIRE(VALID_TASK(task));
|
||||
|
||||
REQUIRE(task->state == task_state_running);
|
||||
/*
|
||||
@@ -1577,10 +1484,11 @@ isc__task_beginexclusive(isc_task_t *task0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_endexclusive(isc_task_t *task0) {
|
||||
isc_task_endexclusive(isc_task_t *task0) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
isc__taskmgr_t *manager = task->manager;
|
||||
|
||||
REQUIRE(VALID_TASK(task));
|
||||
REQUIRE(task->state == task_state_running);
|
||||
LOCK(&manager->lock);
|
||||
REQUIRE(manager->exclusive_requested);
|
||||
@@ -1590,7 +1498,8 @@ isc__task_endexclusive(isc_task_t *task0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__task_setprivilege(isc_task_t *task0, bool priv) {
|
||||
isc_task_setprivilege(isc_task_t *task0, bool priv) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task0));
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
isc__taskmgr_t *manager = task->manager;
|
||||
bool oldpriv;
|
||||
@@ -1617,9 +1526,10 @@ isc__task_setprivilege(isc_task_t *task0, bool priv) {
|
||||
}
|
||||
|
||||
bool
|
||||
isc__task_privilege(isc_task_t *task0) {
|
||||
isc_task_privilege(isc_task_t *task0) {
|
||||
isc__task_t *task = (isc__task_t *)task0;
|
||||
bool priv;
|
||||
REQUIRE(VALID_TASK(task));
|
||||
|
||||
LOCK(&task->lock);
|
||||
priv = (task->flags & TASK_F_PRIVILEGED);
|
||||
@@ -1627,11 +1537,6 @@ isc__task_privilege(isc_task_t *task0) {
|
||||
return (priv);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__task_register(void) {
|
||||
return (isc_task_register(isc__taskmgr_create));
|
||||
}
|
||||
|
||||
bool
|
||||
isc_task_exiting(isc_task_t *t) {
|
||||
isc__task_t *task = (isc__task_t *)t;
|
||||
@@ -1837,31 +1742,6 @@ isc_taskmgr_renderjson(isc_taskmgr_t *mgr0, json_object *tasks) {
|
||||
#endif
|
||||
|
||||
|
||||
static isc_mutex_t createlock;
|
||||
static isc_once_t once = ISC_ONCE_INIT;
|
||||
static isc_taskmgrcreatefunc_t taskmgr_createfunc = NULL;
|
||||
|
||||
static void
|
||||
initialize(void) {
|
||||
RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_task_register(isc_taskmgrcreatefunc_t createfunc) {
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
|
||||
|
||||
LOCK(&createlock);
|
||||
if (taskmgr_createfunc == NULL)
|
||||
taskmgr_createfunc = createfunc;
|
||||
else
|
||||
result = ISC_R_EXISTS;
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_taskmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
|
||||
unsigned int workers, unsigned int default_quantum,
|
||||
@@ -1869,268 +1749,12 @@ isc_taskmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(taskmgr_createfunc != NULL);
|
||||
result = (*taskmgr_createfunc)(mctx, workers, default_quantum,
|
||||
result = isc_taskmgr_create(mctx, workers, default_quantum,
|
||||
managerp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
isc_appctx_settaskmgr(actx, *managerp);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_taskmgr_create(isc_mem_t *mctx, unsigned int workers,
|
||||
unsigned int default_quantum, isc_taskmgr_t **managerp)
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__taskmgr_create(mctx, workers,
|
||||
default_quantum, managerp));
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(taskmgr_createfunc != NULL);
|
||||
result = (*taskmgr_createfunc)(mctx, workers, default_quantum,
|
||||
managerp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
void
|
||||
isc_taskmgr_destroy(isc_taskmgr_t **managerp) {
|
||||
REQUIRE(managerp != NULL && ISCAPI_TASKMGR_VALID(*managerp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__taskmgr_destroy(managerp);
|
||||
else
|
||||
(*managerp)->methods->destroy(managerp);
|
||||
|
||||
ENSURE(*managerp == NULL);
|
||||
}
|
||||
|
||||
void
|
||||
isc_taskmgr_setmode(isc_taskmgr_t *manager, isc_taskmgrmode_t mode) {
|
||||
REQUIRE(ISCAPI_TASKMGR_VALID(manager));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__taskmgr_setmode(manager, mode);
|
||||
else
|
||||
manager->methods->setmode(manager, mode);
|
||||
}
|
||||
|
||||
isc_taskmgrmode_t
|
||||
isc_taskmgr_mode(isc_taskmgr_t *manager) {
|
||||
REQUIRE(ISCAPI_TASKMGR_VALID(manager));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__taskmgr_mode(manager));
|
||||
|
||||
return (manager->methods->mode(manager));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_task_create(isc_taskmgr_t *manager, unsigned int quantum,
|
||||
isc_task_t **taskp)
|
||||
{
|
||||
REQUIRE(ISCAPI_TASKMGR_VALID(manager));
|
||||
REQUIRE(taskp != NULL && *taskp == NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_create(manager, quantum, taskp));
|
||||
|
||||
return (manager->methods->taskcreate(manager, quantum, taskp));
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_attach(isc_task_t *source, isc_task_t **targetp) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(source));
|
||||
REQUIRE(targetp != NULL && *targetp == NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_attach(source, targetp);
|
||||
else
|
||||
source->methods->attach(source, targetp);
|
||||
|
||||
ENSURE(*targetp == source);
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_detach(isc_task_t **taskp) {
|
||||
REQUIRE(taskp != NULL && ISCAPI_TASK_VALID(*taskp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_detach(taskp);
|
||||
else
|
||||
(*taskp)->methods->detach(taskp);
|
||||
|
||||
ENSURE(*taskp == NULL);
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_send(isc_task_t *task, isc_event_t **eventp) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
REQUIRE(eventp != NULL && *eventp != NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_send(task, eventp);
|
||||
else {
|
||||
task->methods->send(task, eventp);
|
||||
ENSURE(*eventp == NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_sendanddetach(isc_task_t **taskp, isc_event_t **eventp) {
|
||||
REQUIRE(taskp != NULL && ISCAPI_TASK_VALID(*taskp));
|
||||
REQUIRE(eventp != NULL && *eventp != NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_sendanddetach(taskp, eventp);
|
||||
else {
|
||||
(*taskp)->methods->sendanddetach(taskp, eventp);
|
||||
ENSURE(*eventp == NULL);
|
||||
}
|
||||
|
||||
ENSURE(*taskp == NULL);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc_task_unsend(isc_task_t *task, void *sender, isc_eventtype_t type,
|
||||
void *tag, isc_eventlist_t *events)
|
||||
{
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_unsend(task, sender, type, tag, events));
|
||||
|
||||
return (task->methods->unsend(task, sender, type, tag, events));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_task_onshutdown(isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_onshutdown(task, action, arg));
|
||||
|
||||
return (task->methods->onshutdown(task, action, arg));
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_shutdown(isc_task_t *task) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_shutdown(task);
|
||||
else
|
||||
task->methods->shutdown(task);
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_destroy(isc_task_t **taskp) {
|
||||
if (!isc_bind9)
|
||||
return;
|
||||
|
||||
isc__task_destroy(taskp);
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_setname(isc_task_t *task, const char *name, void *tag) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_setname(task, name, tag);
|
||||
else
|
||||
task->methods->setname(task, name, tag);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc_task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag)
|
||||
{
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_purge(task, sender, type, tag));
|
||||
|
||||
return (task->methods->purgeevents(task, sender, type, tag));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_task_beginexclusive(isc_task_t *task) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_beginexclusive(task));
|
||||
|
||||
return (task->methods->beginexclusive(task));
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_endexclusive(isc_task_t *task) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_endexclusive(task);
|
||||
else
|
||||
task->methods->endexclusive(task);
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_setprivilege(isc_task_t *task, bool priv) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__task_setprivilege(task, priv);
|
||||
else
|
||||
task->methods->setprivilege(task, priv);
|
||||
}
|
||||
|
||||
bool
|
||||
isc_task_privilege(isc_task_t *task) {
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_privilege(task));
|
||||
|
||||
return (task->methods->privilege(task));
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_getcurrenttime(isc_task_t *task, isc_stdtime_t *t) {
|
||||
if (!isc_bind9)
|
||||
return;
|
||||
|
||||
isc__task_getcurrenttime(task, t);
|
||||
}
|
||||
|
||||
void
|
||||
isc_task_getcurrenttimex(isc_task_t *task, isc_time_t *t) {
|
||||
if (!isc_bind9)
|
||||
return;
|
||||
|
||||
isc__task_getcurrenttimex(task, t);
|
||||
}
|
||||
|
||||
/*%
|
||||
* This is necessary for libisc's internal timer implementation. Other
|
||||
* implementation might skip implementing this.
|
||||
*/
|
||||
unsigned int
|
||||
isc_task_purgerange(isc_task_t *task, void *sender, isc_eventtype_t first,
|
||||
isc_eventtype_t last, void *tag)
|
||||
{
|
||||
REQUIRE(ISCAPI_TASK_VALID(task));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__task_purgerange(task, sender, first, last, tag));
|
||||
|
||||
return (task->methods->purgerange(task, sender, first, last, tag));
|
||||
}
|
||||
|
||||
@@ -137,21 +137,6 @@ ATF_TC_BODY(isc_mem, tc) {
|
||||
|
||||
isc_mem_destroy(&localmctx);
|
||||
|
||||
result = isc_mem_createx2(0, 0, default_memalloc, default_memfree,
|
||||
NULL, &localmctx,
|
||||
ISC_MEMFLAG_FILL | ISC_MEMFLAG_INTERNAL);
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
|
||||
result = isc_mempool_create(localmctx, 2, &mp1);
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
|
||||
tmp = isc_mempool_get(mp1);
|
||||
ATF_CHECK(tmp != NULL);
|
||||
|
||||
isc_mempool_put(mp1, tmp);
|
||||
|
||||
isc_mempool_destroy(&mp1);
|
||||
|
||||
isc_test_end();
|
||||
}
|
||||
|
||||
@@ -288,7 +273,7 @@ ATF_TC_BODY(isc_mem_noflags, tc) {
|
||||
isc_mem_debugging = 0;
|
||||
ptr = isc_mem_get(mctx2, 2048);
|
||||
ATF_CHECK(ptr != NULL);
|
||||
isc__mem_printactive(mctx2, f);
|
||||
isc_mem_printactive(mctx2, f);
|
||||
isc_mem_put(mctx2, ptr, 2048);
|
||||
isc_mem_destroy(&mctx2);
|
||||
isc_stdio_close(f);
|
||||
@@ -339,7 +324,7 @@ ATF_TC_BODY(isc_mem_recordflag, tc) {
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
ptr = isc_mem_get(mctx2, 2048);
|
||||
ATF_CHECK(ptr != NULL);
|
||||
isc__mem_printactive(mctx2, f);
|
||||
isc_mem_printactive(mctx2, f);
|
||||
isc_mem_put(mctx2, ptr, 2048);
|
||||
isc_mem_destroy(&mctx2);
|
||||
isc_stdio_close(f);
|
||||
@@ -390,7 +375,7 @@ ATF_TC_BODY(isc_mem_traceflag, tc) {
|
||||
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
|
||||
ptr = isc_mem_get(mctx2, 2048);
|
||||
ATF_CHECK(ptr != NULL);
|
||||
isc__mem_printactive(mctx2, f);
|
||||
isc_mem_printactive(mctx2, f);
|
||||
isc_mem_put(mctx2, ptr, 2048);
|
||||
isc_mem_destroy(&mctx2);
|
||||
isc_stdio_close(f);
|
||||
|
||||
+11
-198
@@ -97,63 +97,8 @@ struct isc__timermgr {
|
||||
isc_heap_t * heap;
|
||||
};
|
||||
|
||||
/*%
|
||||
* The following are intended for internal use (indicated by "isc__"
|
||||
* prefix) but are not declared as static, allowing direct access from
|
||||
* unit tests etc.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__timer_create(isc_timermgr_t *manager, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
isc_timer_t **timerp);
|
||||
isc_result_t
|
||||
isc__timer_reset(isc_timer_t *timer, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
bool purge);
|
||||
isc_timertype_t
|
||||
isc_timer_gettype(isc_timer_t *timer);
|
||||
isc_result_t
|
||||
isc__timer_touch(isc_timer_t *timer);
|
||||
void
|
||||
isc__timer_attach(isc_timer_t *timer0, isc_timer_t **timerp);
|
||||
void
|
||||
isc__timer_detach(isc_timer_t **timerp);
|
||||
isc_result_t
|
||||
isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp);
|
||||
void
|
||||
isc_timermgr_poke(isc_timermgr_t *manager0);
|
||||
void
|
||||
isc__timermgr_destroy(isc_timermgr_t **managerp);
|
||||
|
||||
static struct isc__timermethods {
|
||||
isc_timermethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *gettype;
|
||||
} timermethods = {
|
||||
{
|
||||
isc__timer_attach,
|
||||
isc__timer_detach,
|
||||
isc__timer_reset,
|
||||
isc__timer_touch
|
||||
},
|
||||
(void *)isc_timer_gettype
|
||||
};
|
||||
|
||||
static struct isc__timermgrmethods {
|
||||
isc_timermgrmethods_t methods;
|
||||
void *poke; /* see above */
|
||||
} timermgrmethods = {
|
||||
{
|
||||
isc__timermgr_destroy,
|
||||
isc__timer_create
|
||||
},
|
||||
(void *)isc_timermgr_poke
|
||||
};
|
||||
|
||||
static inline isc_result_t
|
||||
schedule(isc__timer_t *timer, isc_time_t *now, bool signal_ok) {
|
||||
@@ -331,10 +276,10 @@ destroy(isc__timer_t *timer) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
isc_timer_t **timerp)
|
||||
isc_timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
isc_timer_t **timerp)
|
||||
{
|
||||
isc__timermgr_t *manager = (isc__timermgr_t *)manager0;
|
||||
isc__timer_t *timer;
|
||||
@@ -420,7 +365,6 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
|
||||
ISC_LINK_INIT(timer, link);
|
||||
timer->common.impmagic = TIMER_MAGIC;
|
||||
timer->common.magic = ISCAPI_TIMER_MAGIC;
|
||||
timer->common.methods = (isc_timermethods_t *)&timermethods;
|
||||
|
||||
LOCK(&manager->lock);
|
||||
|
||||
@@ -453,7 +397,7 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__timer_reset(isc_timer_t *timer0, isc_timertype_t type,
|
||||
isc_timer_reset(isc_timer_t *timer0, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
bool purge)
|
||||
{
|
||||
@@ -543,7 +487,7 @@ isc_timer_gettype(isc_timer_t *timer0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__timer_touch(isc_timer_t *timer0) {
|
||||
isc_timer_touch(isc_timer_t *timer0) {
|
||||
isc__timer_t *timer = (isc__timer_t *)timer0;
|
||||
isc_result_t result;
|
||||
isc_time_t now;
|
||||
@@ -574,7 +518,7 @@ isc__timer_touch(isc_timer_t *timer0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__timer_attach(isc_timer_t *timer0, isc_timer_t **timerp) {
|
||||
isc_timer_attach(isc_timer_t *timer0, isc_timer_t **timerp) {
|
||||
isc__timer_t *timer = (isc__timer_t *)timer0;
|
||||
|
||||
/*
|
||||
@@ -592,7 +536,7 @@ isc__timer_attach(isc_timer_t *timer0, isc_timer_t **timerp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__timer_detach(isc_timer_t **timerp) {
|
||||
isc_timer_detach(isc_timer_t **timerp) {
|
||||
isc__timer_t *timer;
|
||||
bool free_timer = false;
|
||||
|
||||
@@ -806,7 +750,7 @@ set_index(void *what, unsigned int index) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
|
||||
isc_timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
|
||||
isc__timermgr_t *manager;
|
||||
isc_result_t result;
|
||||
|
||||
@@ -822,7 +766,6 @@ isc__timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
|
||||
|
||||
manager->common.impmagic = TIMER_MANAGER_MAGIC;
|
||||
manager->common.magic = ISCAPI_TIMERMGR_MAGIC;
|
||||
manager->common.methods = (isc_timermgrmethods_t *)&timermgrmethods;
|
||||
manager->mctx = NULL;
|
||||
manager->done = false;
|
||||
INIT_LIST(manager->timers);
|
||||
@@ -883,7 +826,7 @@ isc_timermgr_poke(isc_timermgr_t *manager0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__timermgr_destroy(isc_timermgr_t **managerp) {
|
||||
isc_timermgr_destroy(isc_timermgr_t **managerp) {
|
||||
isc__timermgr_t *manager;
|
||||
isc_mem_t *mctx;
|
||||
|
||||
@@ -931,146 +874,16 @@ isc__timermgr_destroy(isc_timermgr_t **managerp) {
|
||||
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__timer_register(void) {
|
||||
return (isc_timer_register(isc__timermgr_create));
|
||||
}
|
||||
|
||||
static isc_mutex_t createlock;
|
||||
static isc_once_t once = ISC_ONCE_INIT;
|
||||
static isc_timermgrcreatefunc_t timermgr_createfunc = NULL;
|
||||
|
||||
static void
|
||||
initialize(void) {
|
||||
RUNTIME_CHECK(isc_mutex_init(&createlock) == ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_timer_register(isc_timermgrcreatefunc_t createfunc) {
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);
|
||||
|
||||
LOCK(&createlock);
|
||||
if (timermgr_createfunc == NULL)
|
||||
timermgr_createfunc = createfunc;
|
||||
else
|
||||
result = ISC_R_EXISTS;
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_timermgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
|
||||
isc_timermgr_t **managerp)
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(timermgr_createfunc != NULL);
|
||||
result = (*timermgr_createfunc)(mctx, managerp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
result = isc_timermgr_create(mctx, managerp);
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
isc_appctx_settimermgr(actx, *managerp);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_timermgr_create(isc_mem_t *mctx, isc_timermgr_t **managerp) {
|
||||
isc_result_t result;
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__timermgr_create(mctx, managerp));
|
||||
|
||||
LOCK(&createlock);
|
||||
|
||||
REQUIRE(timermgr_createfunc != NULL);
|
||||
result = (*timermgr_createfunc)(mctx, managerp);
|
||||
|
||||
UNLOCK(&createlock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
void
|
||||
isc_timermgr_destroy(isc_timermgr_t **managerp) {
|
||||
REQUIRE(*managerp != NULL && ISCAPI_TIMERMGR_VALID(*managerp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__timermgr_destroy(managerp);
|
||||
else
|
||||
(*managerp)->methods->destroy(managerp);
|
||||
|
||||
ENSURE(*managerp == NULL);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_timer_create(isc_timermgr_t *manager, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
isc_timer_t **timerp)
|
||||
{
|
||||
REQUIRE(ISCAPI_TIMERMGR_VALID(manager));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__timer_create(manager, type, expires, interval,
|
||||
task, action, arg, timerp));
|
||||
|
||||
return (manager->methods->timercreate(manager, type, expires,
|
||||
interval, task, action, arg,
|
||||
timerp));
|
||||
}
|
||||
|
||||
void
|
||||
isc_timer_attach(isc_timer_t *timer, isc_timer_t **timerp) {
|
||||
REQUIRE(ISCAPI_TIMER_VALID(timer));
|
||||
REQUIRE(timerp != NULL && *timerp == NULL);
|
||||
|
||||
if (isc_bind9)
|
||||
isc__timer_attach(timer, timerp);
|
||||
else
|
||||
timer->methods->attach(timer, timerp);
|
||||
|
||||
ENSURE(*timerp == timer);
|
||||
}
|
||||
|
||||
void
|
||||
isc_timer_detach(isc_timer_t **timerp) {
|
||||
REQUIRE(timerp != NULL && ISCAPI_TIMER_VALID(*timerp));
|
||||
|
||||
if (isc_bind9)
|
||||
isc__timer_detach(timerp);
|
||||
else
|
||||
(*timerp)->methods->detach(timerp);
|
||||
|
||||
ENSURE(*timerp == NULL);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_timer_reset(isc_timer_t *timer, isc_timertype_t type,
|
||||
const isc_time_t *expires, const isc_interval_t *interval,
|
||||
bool purge)
|
||||
{
|
||||
REQUIRE(ISCAPI_TIMER_VALID(timer));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__timer_reset(timer, type, expires,
|
||||
interval, purge));
|
||||
|
||||
return (timer->methods->reset(timer, type, expires, interval, purge));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_timer_touch(isc_timer_t *timer) {
|
||||
REQUIRE(ISCAPI_TIMER_VALID(timer));
|
||||
|
||||
if (isc_bind9)
|
||||
return (isc__timer_touch(timer));
|
||||
|
||||
return (timer->methods->touch(timer));
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
CINCLUDES = -I${srcdir}/include \
|
||||
-I${srcdir}/../pthreads/include \
|
||||
-I${srcdir}/../@ISC_THREAD_DIR@/include \
|
||||
-I../include \
|
||||
-I${srcdir}/../include \
|
||||
-I${srcdir}/.. @OPENSSL_INCLUDES@
|
||||
|
||||
+36
-91
@@ -50,34 +50,7 @@
|
||||
* as an event loop dispatching various events.
|
||||
*/
|
||||
static pthread_t blockedthread;
|
||||
|
||||
/*%
|
||||
* The following are intended for internal use (indicated by "isc__"
|
||||
* prefix) but are not declared as static, allowing direct access from
|
||||
* unit tests etc.
|
||||
*/
|
||||
isc_result_t isc__app_start(void);
|
||||
isc_result_t isc__app_ctxstart(isc_appctx_t *ctx);
|
||||
isc_result_t isc__app_onrun(isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg);
|
||||
isc_result_t isc__app_ctxrun(isc_appctx_t *ctx);
|
||||
isc_result_t isc__app_run(void);
|
||||
isc_result_t isc__app_ctxshutdown(isc_appctx_t *ctx);
|
||||
isc_result_t isc__app_shutdown(void);
|
||||
isc_result_t isc__app_reload(void);
|
||||
isc_result_t isc__app_ctxsuspend(isc_appctx_t *ctx);
|
||||
void isc__app_ctxfinish(isc_appctx_t *ctx);
|
||||
void isc__app_finish(void);
|
||||
void isc__app_block(void);
|
||||
void isc__app_unblock(void);
|
||||
isc_result_t isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp);
|
||||
void isc__appctx_destroy(isc_appctx_t **ctxp);
|
||||
void isc__appctx_settaskmgr(isc_appctx_t *ctx, isc_taskmgr_t *taskmgr);
|
||||
void isc__appctx_setsocketmgr(isc_appctx_t *ctx, isc_socketmgr_t *socketmgr);
|
||||
void isc__appctx_settimermgr(isc_appctx_t *ctx, isc_timermgr_t *timermgr);
|
||||
isc_result_t isc__app_ctxonrun(isc_appctx_t *ctx, isc_mem_t *mctx,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg);
|
||||
static bool is_running;
|
||||
|
||||
/*
|
||||
* The application context of this module. This implementation actually
|
||||
@@ -114,35 +87,6 @@ typedef struct isc__appctx {
|
||||
|
||||
static isc__appctx_t isc_g_appctx;
|
||||
|
||||
static struct {
|
||||
isc_appmethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *run, *shutdown, *start, *reload, *finish, *block, *unblock;
|
||||
} appmethods = {
|
||||
{
|
||||
isc__appctx_destroy,
|
||||
isc__app_ctxstart,
|
||||
isc__app_ctxrun,
|
||||
isc__app_ctxsuspend,
|
||||
isc__app_ctxshutdown,
|
||||
isc__app_ctxfinish,
|
||||
isc__appctx_settaskmgr,
|
||||
isc__appctx_setsocketmgr,
|
||||
isc__appctx_settimermgr,
|
||||
isc__app_ctxonrun
|
||||
},
|
||||
(void *)isc__app_run,
|
||||
(void *)isc__app_shutdown,
|
||||
(void *)isc__app_start,
|
||||
(void *)isc__app_reload,
|
||||
(void *)isc__app_finish,
|
||||
(void *)isc__app_block,
|
||||
(void *)isc__app_unblock
|
||||
};
|
||||
|
||||
#ifdef HAVE_LINUXTHREADS
|
||||
/*!
|
||||
* Linux has sigwait(), but it appears to prevent signal handlers from
|
||||
@@ -194,7 +138,7 @@ handle_signal(int sig, void (*handler)(int)) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxstart(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxstart(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
isc_result_t result;
|
||||
int presult;
|
||||
@@ -329,26 +273,25 @@ isc__app_ctxstart(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_start(void) {
|
||||
isc_app_start(void) {
|
||||
isc_g_appctx.common.impmagic = APPCTX_MAGIC;
|
||||
isc_g_appctx.common.magic = ISCAPI_APPCTX_MAGIC;
|
||||
isc_g_appctx.common.methods = &appmethods.methods;
|
||||
isc_g_appctx.mctx = NULL;
|
||||
/* The remaining members will be initialized in ctxstart() */
|
||||
|
||||
return (isc__app_ctxstart((isc_appctx_t *)&isc_g_appctx));
|
||||
return (isc_app_ctxstart((isc_appctx_t *)&isc_g_appctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action,
|
||||
isc_app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg)
|
||||
{
|
||||
return (isc__app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx,
|
||||
return (isc_app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx,
|
||||
task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
@@ -387,7 +330,7 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxrun(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxrun(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
int result;
|
||||
isc_event_t *event, *next_event;
|
||||
@@ -548,12 +491,21 @@ isc__app_ctxrun(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_run(void) {
|
||||
return (isc__app_ctxrun((isc_appctx_t *)&isc_g_appctx));
|
||||
isc_app_run(void) {
|
||||
isc_result_t result;
|
||||
is_running = true;
|
||||
result = isc_app_ctxrun((isc_appctx_t *)&isc_g_appctx);
|
||||
is_running = false;
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
isc_app_isrunning() {
|
||||
return (is_running);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxshutdown(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxshutdown(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
bool want_kill = true;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
@@ -619,12 +571,12 @@ isc__app_ctxshutdown(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_shutdown(void) {
|
||||
return (isc__app_ctxshutdown((isc_appctx_t *)&isc_g_appctx));
|
||||
isc_app_shutdown(void) {
|
||||
return (isc_app_ctxshutdown((isc_appctx_t *)&isc_g_appctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
bool want_kill = true;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
@@ -648,6 +600,7 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
/* BIND9 internal, but using multiple contexts */
|
||||
ctx->want_reload = true;
|
||||
else {
|
||||
ctx->want_reload = true;
|
||||
#ifdef HAVE_LINUXTHREADS
|
||||
if (isc_bind9) {
|
||||
/* BIND9 internal, single context */
|
||||
@@ -691,12 +644,12 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_reload(void) {
|
||||
return (isc__app_ctxsuspend((isc_appctx_t *)&isc_g_appctx));
|
||||
isc_app_reload(void) {
|
||||
return (isc_app_ctxsuspend((isc_appctx_t *)&isc_g_appctx));
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_ctxfinish(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxfinish(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -705,12 +658,12 @@ isc__app_ctxfinish(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_finish(void) {
|
||||
isc__app_ctxfinish((isc_appctx_t *)&isc_g_appctx);
|
||||
isc_app_finish(void) {
|
||||
isc_app_ctxfinish((isc_appctx_t *)&isc_g_appctx);
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_block(void) {
|
||||
isc_app_block(void) {
|
||||
sigset_t sset;
|
||||
REQUIRE(isc_g_appctx.running);
|
||||
REQUIRE(!isc_g_appctx.blocked);
|
||||
@@ -724,7 +677,7 @@ isc__app_block(void) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_unblock(void) {
|
||||
isc_app_unblock(void) {
|
||||
sigset_t sset;
|
||||
|
||||
REQUIRE(isc_g_appctx.running);
|
||||
@@ -741,7 +694,7 @@ isc__app_unblock(void) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
isc__appctx_t *ctx;
|
||||
|
||||
REQUIRE(mctx != NULL);
|
||||
@@ -753,7 +706,6 @@ isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
|
||||
ctx->common.impmagic = APPCTX_MAGIC;
|
||||
ctx->common.magic = ISCAPI_APPCTX_MAGIC;
|
||||
ctx->common.methods = &appmethods.methods;
|
||||
|
||||
ctx->mctx = NULL;
|
||||
isc_mem_attach(mctx, &ctx->mctx);
|
||||
@@ -768,7 +720,7 @@ isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_destroy(isc_appctx_t **ctxp) {
|
||||
isc_appctx_destroy(isc_appctx_t **ctxp) {
|
||||
isc__appctx_t *ctx;
|
||||
|
||||
REQUIRE(ctxp != NULL);
|
||||
@@ -781,7 +733,7 @@ isc__appctx_destroy(isc_appctx_t **ctxp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) {
|
||||
isc_appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -790,7 +742,7 @@ isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) {
|
||||
isc_appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -799,17 +751,10 @@ isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) {
|
||||
isc_appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
|
||||
ctx->timermgr = timermgr;
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_register(void) {
|
||||
return (isc_app_register(isc__appctx_create));
|
||||
}
|
||||
|
||||
#include "../app_api.c"
|
||||
|
||||
+60
-241
@@ -38,6 +38,7 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/buffer.h>
|
||||
#include <isc/bufferlist.h>
|
||||
#include <isc/condition.h>
|
||||
@@ -224,7 +225,6 @@ typedef enum { poll_idle, poll_active, poll_checking } pollstate_t;
|
||||
*/
|
||||
#define SOFT_ERROR(e) ((e) == EAGAIN || \
|
||||
(e) == EWOULDBLOCK || \
|
||||
(e) == ENOBUFS || \
|
||||
(e) == EINTR || \
|
||||
(e) == 0)
|
||||
|
||||
@@ -478,176 +478,6 @@ static void build_msghdr_recv(isc__socket_t *, char *, isc_socketevent_t *,
|
||||
static bool process_ctlfd(isc__socketmgr_t *manager);
|
||||
static void setdscp(isc__socket_t *sock, isc_dscp_t dscp);
|
||||
|
||||
/*%
|
||||
* The following are intended for internal use (indicated by "isc__"
|
||||
* prefix) but are not declared as static, allowing direct access from
|
||||
* unit tests etc.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__socket_open(isc_socket_t *sock0);
|
||||
isc_result_t
|
||||
isc__socket_close(isc_socket_t *sock0);
|
||||
isc_result_t
|
||||
isc__socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
|
||||
isc_socket_t **socketp);
|
||||
void
|
||||
isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp);
|
||||
void
|
||||
isc__socket_detach(isc_socket_t **socketp);
|
||||
isc_result_t
|
||||
isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg);
|
||||
isc_result_t
|
||||
isc__socket_recv(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg);
|
||||
isc_result_t
|
||||
isc__socket_recv2(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_socketevent_t *event, unsigned int flags);
|
||||
isc_result_t
|
||||
isc__socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg);
|
||||
isc_result_t
|
||||
isc__socket_sendto(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo);
|
||||
isc_result_t
|
||||
isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg);
|
||||
isc_result_t
|
||||
isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo);
|
||||
isc_result_t
|
||||
isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
unsigned int flags);
|
||||
isc_result_t
|
||||
isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
isc_socketevent_t *event, unsigned int flags);
|
||||
isc_socketevent_t *
|
||||
isc_socket_socketevent(isc_mem_t *mctx, void *sender,
|
||||
isc_eventtype_t eventtype, isc_taskaction_t action,
|
||||
void *arg);
|
||||
|
||||
void
|
||||
isc__socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active);
|
||||
isc_result_t
|
||||
isc__socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
|
||||
uint32_t owner, uint32_t group);
|
||||
isc_result_t
|
||||
isc__socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr,
|
||||
unsigned int options);
|
||||
isc_result_t
|
||||
isc__socket_filter(isc_socket_t *sock, const char *filter);
|
||||
isc_result_t
|
||||
isc__socket_listen(isc_socket_t *sock, unsigned int backlog);
|
||||
isc_result_t
|
||||
isc__socket_accept(isc_socket_t *sock,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg);
|
||||
isc_result_t
|
||||
isc__socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg);
|
||||
isc_result_t
|
||||
isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp);
|
||||
isc_result_t
|
||||
isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp);
|
||||
void
|
||||
isc__socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how);
|
||||
isc_sockettype_t
|
||||
isc__socket_gettype(isc_socket_t *sock);
|
||||
bool
|
||||
isc__socket_isbound(isc_socket_t *sock);
|
||||
void
|
||||
isc__socket_ipv6only(isc_socket_t *sock, bool yes);
|
||||
void
|
||||
isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp);
|
||||
isc_result_t
|
||||
isc__socket_fdwatchcreate(isc_socketmgr_t *manager, int fd, int flags,
|
||||
isc_sockfdwatch_t callback, void *cbarg,
|
||||
isc_task_t *task, isc_socket_t **socketp);
|
||||
isc_result_t
|
||||
isc__socket_fdwatchpoke(isc_socket_t *sock, int flags);
|
||||
isc_result_t
|
||||
isc__socket_dup(isc_socket_t *sock, isc_socket_t **socketp);
|
||||
int
|
||||
isc__socket_getfd(isc_socket_t *sock);
|
||||
|
||||
isc_result_t
|
||||
isc__socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp);
|
||||
isc_result_t
|
||||
isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
unsigned int maxsocks);
|
||||
isc_result_t
|
||||
isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager0, unsigned int *nsockp);
|
||||
void
|
||||
isc_socketmgr_setstats(isc_socketmgr_t *manager0, isc_stats_t *stats);
|
||||
void
|
||||
isc__socketmgr_destroy(isc_socketmgr_t **managerp);
|
||||
void
|
||||
isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag);
|
||||
const char *
|
||||
isc__socket_getname(isc_socket_t *socket0);
|
||||
void *
|
||||
isc__socket_gettag(isc_socket_t *socket0);
|
||||
|
||||
#ifdef HAVE_LIBXML2
|
||||
void
|
||||
isc__socketmgr_renderxml(isc_socketmgr_t *mgr0, xmlTextWriterPtr writer);
|
||||
#endif
|
||||
#ifdef HAVE_JSON
|
||||
isc_result_t
|
||||
isc__socketmgr_renderjson(isc_socketmgr_t *mgr0, json_object *stats);
|
||||
#endif
|
||||
|
||||
static struct {
|
||||
isc_socketmethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *recvv, *send, *sendv, *sendto2, *cleanunix, *permunix, *filter,
|
||||
*listen, *accept, *getpeername, *isbound;
|
||||
} socketmethods = {
|
||||
{
|
||||
isc__socket_attach,
|
||||
isc__socket_detach,
|
||||
isc__socket_bind,
|
||||
isc__socket_sendto,
|
||||
isc__socket_sendto2,
|
||||
isc__socket_connect,
|
||||
isc__socket_recv,
|
||||
isc__socket_recv2,
|
||||
isc__socket_cancel,
|
||||
isc__socket_getsockname,
|
||||
isc__socket_gettype,
|
||||
isc__socket_ipv6only,
|
||||
isc__socket_fdwatchpoke,
|
||||
isc__socket_dup,
|
||||
isc__socket_getfd,
|
||||
isc__socket_dscp
|
||||
},
|
||||
(void *)isc__socket_recvv, (void *)isc__socket_send,
|
||||
(void *)isc__socket_sendv, (void *)isc__socket_sendto2,
|
||||
(void *)isc__socket_cleanunix, (void *)isc__socket_permunix,
|
||||
(void *)isc__socket_filter, (void *)isc__socket_listen,
|
||||
(void *)isc__socket_accept, (void *)isc__socket_getpeername,
|
||||
(void *)isc__socket_isbound
|
||||
};
|
||||
|
||||
static isc_socketmgrmethods_t socketmgrmethods = {
|
||||
isc__socketmgr_destroy,
|
||||
isc__socket_create,
|
||||
isc__socket_fdwatchcreate
|
||||
};
|
||||
|
||||
#define SELECT_POKE_SHUTDOWN (-1)
|
||||
#define SELECT_POKE_NOTHING (-2)
|
||||
#define SELECT_POKE_READ (-3)
|
||||
@@ -1891,7 +1721,7 @@ doio_recv(isc__socket_t *sock, isc_socketevent_t *dev) {
|
||||
SOFT_OR_HARD(EHOSTDOWN, ISC_R_HOSTDOWN);
|
||||
/* HPUX 11.11 can return EADDRNOTAVAIL. */
|
||||
SOFT_OR_HARD(EADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL);
|
||||
SOFT_OR_HARD(ENOBUFS, ISC_R_NORESOURCES);
|
||||
ALWAYS_HARD(ENOBUFS, ISC_R_NORESOURCES);
|
||||
/* Should never get this one but it was seen. */
|
||||
#ifdef ENOPROTOOPT
|
||||
SOFT_OR_HARD(ENOPROTOOPT, ISC_R_HOSTUNREACH);
|
||||
@@ -2088,7 +1918,7 @@ doio_send(isc__socket_t *sock, isc_socketevent_t *dev) {
|
||||
ALWAYS_HARD(EHOSTDOWN, ISC_R_HOSTUNREACH);
|
||||
#endif
|
||||
ALWAYS_HARD(ENETUNREACH, ISC_R_NETUNREACH);
|
||||
SOFT_OR_HARD(ENOBUFS, ISC_R_NORESOURCES);
|
||||
ALWAYS_HARD(ENOBUFS, ISC_R_NORESOURCES);
|
||||
ALWAYS_HARD(EPERM, ISC_R_HOSTUNREACH);
|
||||
ALWAYS_HARD(EPIPE, ISC_R_NOTCONNECTED);
|
||||
ALWAYS_HARD(ECONNRESET, ISC_R_CONNECTIONRESET);
|
||||
@@ -2908,7 +2738,6 @@ socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type,
|
||||
return (result);
|
||||
}
|
||||
|
||||
sock->common.methods = (isc_socketmethods_t *)&socketmethods;
|
||||
sock->references = 1;
|
||||
*socketp = (isc_socket_t *)sock;
|
||||
|
||||
@@ -2951,7 +2780,7 @@ socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type,
|
||||
* in 'socketp'.
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type,
|
||||
isc_socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type,
|
||||
isc_socket_t **socketp)
|
||||
{
|
||||
return (socket_create(manager0, pf, type, socketp, NULL));
|
||||
@@ -2962,7 +2791,7 @@ isc__socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type,
|
||||
* in 'socketp'.
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) {
|
||||
isc_socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -2974,7 +2803,7 @@ isc__socket_dup(isc_socket_t *sock0, isc_socket_t **socketp) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_open(isc_socket_t *sock0) {
|
||||
isc_socket_open(isc_socket_t *sock0) {
|
||||
isc_result_t result;
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
@@ -3027,7 +2856,7 @@ isc__socket_open(isc_socket_t *sock0) {
|
||||
* in 'socketp'.
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags,
|
||||
isc_socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags,
|
||||
isc_sockfdwatch_t callback, void *cbarg,
|
||||
isc_task_t *task, isc_socket_t **socketp)
|
||||
{
|
||||
@@ -3053,7 +2882,6 @@ isc__socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags,
|
||||
sock->fdwatchtask = task;
|
||||
sock->statsindex = fdwatchstatsindex;
|
||||
|
||||
sock->common.methods = (isc_socketmethods_t *)&socketmethods;
|
||||
sock->references = 1;
|
||||
*socketp = (isc_socket_t *)sock;
|
||||
|
||||
@@ -3098,7 +2926,7 @@ isc__socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags,
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__socket_fdwatchpoke(isc_socket_t *sock0, int flags)
|
||||
isc_socket_fdwatchpoke(isc_socket_t *sock0, int flags)
|
||||
{
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
@@ -3132,7 +2960,7 @@ isc__socket_fdwatchpoke(isc_socket_t *sock0, int flags)
|
||||
* Attach to a socket. Caller must explicitly detach when it is done.
|
||||
*/
|
||||
void
|
||||
isc__socket_attach(isc_socket_t *sock0, isc_socket_t **socketp) {
|
||||
isc_socket_attach(isc_socket_t *sock0, isc_socket_t **socketp) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -3150,7 +2978,7 @@ isc__socket_attach(isc_socket_t *sock0, isc_socket_t **socketp) {
|
||||
* up by destroying the socket.
|
||||
*/
|
||||
void
|
||||
isc__socket_detach(isc_socket_t **socketp) {
|
||||
isc_socket_detach(isc_socket_t **socketp) {
|
||||
isc__socket_t *sock;
|
||||
bool kill_socket = false;
|
||||
|
||||
@@ -3172,7 +3000,7 @@ isc__socket_detach(isc_socket_t **socketp) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_close(isc_socket_t *sock0) {
|
||||
isc_socket_close(isc_socket_t *sock0) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
int fd;
|
||||
isc__socketmgr_t *manager;
|
||||
@@ -4283,7 +4111,7 @@ watcher(void *uap) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) {
|
||||
isc_socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) {
|
||||
isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0;
|
||||
|
||||
REQUIRE(VALID_MANAGER(manager));
|
||||
@@ -4292,7 +4120,7 @@ isc__socketmgr_setreserved(isc_socketmgr_t *manager0, uint32_t reserved) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socketmgr_maxudp(isc_socketmgr_t *manager0, int maxudp) {
|
||||
isc_socketmgr_maxudp(isc_socketmgr_t *manager0, int maxudp) {
|
||||
isc__socketmgr_t *manager = (isc__socketmgr_t *)manager0;
|
||||
|
||||
REQUIRE(VALID_MANAGER(manager));
|
||||
@@ -4504,12 +4332,12 @@ cleanup_watcher(isc_mem_t *mctx, isc__socketmgr_t *manager) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
|
||||
return (isc__socketmgr_create2(mctx, managerp, 0));
|
||||
isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
|
||||
return (isc_socketmgr_create2(mctx, managerp, 0));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
unsigned int maxsocks)
|
||||
{
|
||||
int i;
|
||||
@@ -4553,7 +4381,6 @@ isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
#endif
|
||||
manager->stats = NULL;
|
||||
|
||||
manager->common.methods = &socketmgrmethods;
|
||||
manager->common.magic = ISCAPI_SOCKETMGR_MAGIC;
|
||||
manager->common.impmagic = SOCKET_MANAGER_MAGIC;
|
||||
manager->mctx = NULL;
|
||||
@@ -4697,7 +4524,7 @@ isc_socketmgr_setstats(isc_socketmgr_t *manager0, isc_stats_t *stats) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
|
||||
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
|
||||
isc__socketmgr_t *manager;
|
||||
int i;
|
||||
isc_mem_t *mctx;
|
||||
@@ -4857,7 +4684,7 @@ socket_recv(isc__socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist,
|
||||
isc_socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
@@ -4912,7 +4739,7 @@ isc__socket_recvv(isc_socket_t *sock0, isc_bufferlist_t *buflist,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_recv(isc_socket_t *sock0, isc_region_t *region,
|
||||
isc_socket_recv(isc_socket_t *sock0, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
@@ -4933,11 +4760,11 @@ isc__socket_recv(isc_socket_t *sock0, isc_region_t *region,
|
||||
if (dev == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
|
||||
return (isc__socket_recv2(sock0, region, minimum, task, dev, 0));
|
||||
return (isc_socket_recv2(sock0, region, minimum, task, dev, 0));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_recv2(isc_socket_t *sock0, isc_region_t *region,
|
||||
isc_socket_recv2(isc_socket_t *sock0, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
{
|
||||
@@ -5061,18 +4888,18 @@ socket_send(isc__socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
/*
|
||||
* REQUIRE() checking is performed in isc_socket_sendto().
|
||||
*/
|
||||
return (isc__socket_sendto(sock, region, task, action, arg, NULL,
|
||||
return (isc_socket_sendto(sock, region, task, action, arg, NULL,
|
||||
NULL));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendto(isc_socket_t *sock0, isc_region_t *region,
|
||||
isc_socket_sendto(isc_socket_t *sock0, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
|
||||
{
|
||||
@@ -5101,24 +4928,24 @@ isc__socket_sendto(isc_socket_t *sock0, isc_region_t *region,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
return (isc__socket_sendtov2(sock, buflist, task, action, arg, NULL,
|
||||
return (isc_socket_sendtov2(sock, buflist, task, action, arg, NULL,
|
||||
NULL, 0));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
|
||||
{
|
||||
return (isc__socket_sendtov2(sock, buflist, task, action, arg, address,
|
||||
return (isc_socket_sendtov2(sock, buflist, task, action, arg, address,
|
||||
pktinfo, 0));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist,
|
||||
isc_socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
unsigned int flags)
|
||||
@@ -5160,7 +4987,7 @@ isc__socket_sendtov2(isc_socket_t *sock0, isc_bufferlist_t *buflist,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendto2(isc_socket_t *sock0, isc_region_t *region,
|
||||
isc_socket_sendto2(isc_socket_t *sock0, isc_region_t *region,
|
||||
isc_task_t *task,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
@@ -5183,7 +5010,7 @@ isc__socket_sendto2(isc_socket_t *sock0, isc_region_t *region,
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
|
||||
isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
|
||||
#ifdef ISC_PLATFORM_HAVESYSUNH
|
||||
int s;
|
||||
struct stat sb;
|
||||
@@ -5313,7 +5140,7 @@ isc__socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
|
||||
isc_socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
|
||||
uint32_t owner, uint32_t group)
|
||||
{
|
||||
#ifdef ISC_PLATFORM_HAVESYSUNH
|
||||
@@ -5369,7 +5196,7 @@ isc__socket_permunix(const isc_sockaddr_t *sockaddr, uint32_t perm,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_bind(isc_socket_t *sock0, const isc_sockaddr_t *sockaddr,
|
||||
isc_socket_bind(isc_socket_t *sock0, const isc_sockaddr_t *sockaddr,
|
||||
isc_socket_options_t options)
|
||||
{
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
@@ -5446,7 +5273,7 @@ isc__socket_bind(isc_socket_t *sock0, const isc_sockaddr_t *sockaddr,
|
||||
#undef ENABLE_ACCEPTFILTER
|
||||
|
||||
isc_result_t
|
||||
isc__socket_filter(isc_socket_t *sock0, const char *filter) {
|
||||
isc_socket_filter(isc_socket_t *sock0, const char *filter) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
#if defined(SO_ACCEPTFILTER) && defined(ENABLE_ACCEPTFILTER)
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
@@ -5549,7 +5376,7 @@ set_tcp_fastopen(isc__socket_t *sock, unsigned int backlog) {
|
||||
* as well keep things simple rather than having to track them.
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_listen(isc_socket_t *sock0, unsigned int backlog) {
|
||||
isc_socket_listen(isc_socket_t *sock0, unsigned int backlog) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
|
||||
@@ -5586,7 +5413,7 @@ isc__socket_listen(isc_socket_t *sock0, unsigned int backlog) {
|
||||
* This should try to do aggressive accept() XXXMLG
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_accept(isc_socket_t *sock0,
|
||||
isc_socket_accept(isc_socket_t *sock0,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
@@ -5661,7 +5488,7 @@ isc__socket_accept(isc_socket_t *sock0,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr,
|
||||
isc_socket_connect(isc_socket_t *sock0, const isc_sockaddr_t *addr,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
@@ -5936,7 +5763,7 @@ internal_connect(isc_task_t *me, isc_event_t *ev) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) {
|
||||
isc_socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
isc_result_t result;
|
||||
|
||||
@@ -5958,7 +5785,7 @@ isc__socket_getpeername(isc_socket_t *sock0, isc_sockaddr_t *addressp) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) {
|
||||
isc_socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
ISC_SOCKADDR_LEN_T len;
|
||||
isc_result_t result;
|
||||
@@ -5997,7 +5824,7 @@ isc__socket_getsockname(isc_socket_t *sock0, isc_sockaddr_t *addressp) {
|
||||
* queued for task "task" of type "how". "how" is a bitmask.
|
||||
*/
|
||||
void
|
||||
isc__socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) {
|
||||
isc_socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -6117,7 +5944,7 @@ isc__socket_cancel(isc_socket_t *sock0, isc_task_t *task, unsigned int how) {
|
||||
}
|
||||
|
||||
isc_sockettype_t
|
||||
isc__socket_gettype(isc_socket_t *sock0) {
|
||||
isc_socket_gettype(isc_socket_t *sock0) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -6125,22 +5952,7 @@ isc__socket_gettype(isc_socket_t *sock0) {
|
||||
return (sock->type);
|
||||
}
|
||||
|
||||
bool
|
||||
isc__socket_isbound(isc_socket_t *sock0) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
bool val;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
|
||||
LOCK(&sock->lock);
|
||||
val = ((sock->bound) ? true : false);
|
||||
UNLOCK(&sock->lock);
|
||||
|
||||
return (val);
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_ipv6only(isc_socket_t *sock0, bool yes) {
|
||||
isc_socket_ipv6only(isc_socket_t *sock0, bool yes) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
#if defined(IPV6_V6ONLY)
|
||||
int onoff = yes ? 1 : 0;
|
||||
@@ -6217,7 +6029,7 @@ setdscp(isc__socket_t *sock, isc_dscp_t dscp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_dscp(isc_socket_t *sock0, isc_dscp_t dscp) {
|
||||
isc_socket_dscp(isc_socket_t *sock0, isc_dscp_t dscp) {
|
||||
isc__socket_t *sock = (isc__socket_t *)sock0;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -6251,7 +6063,7 @@ isc_socket_socketevent(isc_mem_t *mctx, void *sender,
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) {
|
||||
isc_socket_setname(isc_socket_t *socket0, const char *name, void *tag) {
|
||||
isc__socket_t *sock = (isc__socket_t *)socket0;
|
||||
|
||||
/*
|
||||
@@ -6267,26 +6079,21 @@ isc__socket_setname(isc_socket_t *socket0, const char *name, void *tag) {
|
||||
}
|
||||
|
||||
const char *
|
||||
isc__socket_getname(isc_socket_t *socket0) {
|
||||
isc_socket_getname(isc_socket_t *socket0) {
|
||||
isc__socket_t *sock = (isc__socket_t *)socket0;
|
||||
|
||||
return (sock->name);
|
||||
}
|
||||
|
||||
void *
|
||||
isc__socket_gettag(isc_socket_t *socket0) {
|
||||
isc_socket_gettag(isc_socket_t *socket0) {
|
||||
isc__socket_t *sock = (isc__socket_t *)socket0;
|
||||
|
||||
return (sock->tag);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_register(void) {
|
||||
return (isc_socket_register(isc__socketmgr_create));
|
||||
}
|
||||
|
||||
int
|
||||
isc__socket_getfd(isc_socket_t *socket0) {
|
||||
isc_socket_getfd(isc_socket_t *socket0) {
|
||||
isc__socket_t *sock = (isc__socket_t *)socket0;
|
||||
|
||||
return ((short) sock->fd);
|
||||
@@ -6548,4 +6355,16 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr0, json_object *stats) {
|
||||
}
|
||||
#endif /* HAVE_JSON */
|
||||
|
||||
#include "../socket_api.c"
|
||||
isc_result_t
|
||||
isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
|
||||
isc_socketmgr_t **managerp)
|
||||
{
|
||||
isc_result_t result;
|
||||
|
||||
result = isc_socketmgr_create(mctx, managerp);
|
||||
|
||||
if (result == ISC_R_SUCCESS)
|
||||
isc_appctx_setsocketmgr(actx, *managerp);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
+36
-87
@@ -40,39 +40,8 @@
|
||||
*/
|
||||
|
||||
static isc_thread_t blockedthread;
|
||||
static bool is_running;
|
||||
|
||||
/*%
|
||||
* The following are intended for internal use (indicated by "isc__"
|
||||
* prefix) but are not declared as static, allowing direct access from
|
||||
* unit tests etc.
|
||||
*/
|
||||
isc_result_t isc__app_start(void);
|
||||
isc_result_t isc__app_ctxstart(isc_appctx_t *ctx);
|
||||
isc_result_t isc__app_onrun(isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg);
|
||||
isc_result_t isc__app_ctxrun(isc_appctx_t *ctx);
|
||||
isc_result_t isc__app_run(void);
|
||||
isc_result_t isc__app_ctxshutdown(isc_appctx_t *ctx);
|
||||
isc_result_t isc__app_shutdown(void);
|
||||
isc_result_t isc__app_reload(void);
|
||||
isc_result_t isc__app_ctxsuspend(isc_appctx_t *ctx);
|
||||
void isc__app_ctxfinish(isc_appctx_t *ctx);
|
||||
void isc__app_finish(void);
|
||||
void isc__app_block(void);
|
||||
void isc__app_unblock(void);
|
||||
isc_result_t isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp);
|
||||
void isc__appctx_destroy(isc_appctx_t **ctxp);
|
||||
void isc__appctx_settaskmgr(isc_appctx_t *ctx, isc_taskmgr_t *taskmgr);
|
||||
void isc__appctx_setsocketmgr(isc_appctx_t *ctx, isc_socketmgr_t *socketmgr);
|
||||
void isc__appctx_settimermgr(isc_appctx_t *ctx, isc_timermgr_t *timermgr);
|
||||
isc_result_t isc__app_ctxonrun(isc_appctx_t *ctx, isc_mem_t *mctx,
|
||||
isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg);
|
||||
|
||||
/*
|
||||
* The application context of this module. This implementation actually
|
||||
* doesn't use it. (This may change in the future).
|
||||
*/
|
||||
#define APPCTX_MAGIC ISC_MAGIC('A', 'p', 'c', 'x')
|
||||
#define VALID_APPCTX(c) ISC_MAGIC_VALID(c, APPCTX_MAGIC)
|
||||
|
||||
@@ -112,42 +81,13 @@ typedef struct isc__appctx {
|
||||
|
||||
static isc__appctx_t isc_g_appctx;
|
||||
|
||||
static struct {
|
||||
isc_appmethods_t methods;
|
||||
|
||||
/*%
|
||||
* The following are defined just for avoiding unused static functions.
|
||||
*/
|
||||
void *run, *shutdown, *start, *reload, *finish, *block, *unblock;
|
||||
} appmethods = {
|
||||
{
|
||||
isc__appctx_destroy,
|
||||
isc__app_ctxstart,
|
||||
isc__app_ctxrun,
|
||||
isc__app_ctxsuspend,
|
||||
isc__app_ctxshutdown,
|
||||
isc__app_ctxfinish,
|
||||
isc__appctx_settaskmgr,
|
||||
isc__appctx_setsocketmgr,
|
||||
isc__appctx_settimermgr,
|
||||
isc__app_ctxonrun
|
||||
},
|
||||
(void *)isc__app_run,
|
||||
(void *)isc__app_shutdown,
|
||||
(void *)isc__app_start,
|
||||
(void *)isc__app_reload,
|
||||
(void *)isc__app_finish,
|
||||
(void *)isc__app_block,
|
||||
(void *)isc__app_unblock
|
||||
};
|
||||
|
||||
/*
|
||||
* We need to remember which thread is the main thread...
|
||||
*/
|
||||
static isc_thread_t main_thread;
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxstart(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxstart(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
isc_result_t result;
|
||||
|
||||
@@ -180,26 +120,26 @@ isc__app_ctxstart(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_start(void) {
|
||||
isc_app_start(void) {
|
||||
isc_g_appctx.common.impmagic = APPCTX_MAGIC;
|
||||
isc_g_appctx.common.magic = ISCAPI_APPCTX_MAGIC;
|
||||
isc_g_appctx.common.methods = &appmethods.methods;
|
||||
isc_g_appctx.mctx = NULL;
|
||||
/* The remaining members will be initialized in ctxstart() */
|
||||
|
||||
return (isc__app_ctxstart((isc_appctx_t *)&isc_g_appctx));
|
||||
return (isc_app_ctxstart((isc_appctx_t *)&isc_g_appctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action,
|
||||
isc_app_onrun(isc_mem_t *mctx, isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg)
|
||||
{
|
||||
return (isc__app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx,
|
||||
return (isc_app_ctxonrun((isc_appctx_t *)&isc_g_appctx, mctx,
|
||||
task, action, arg));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
@@ -238,7 +178,7 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxrun(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxrun(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
isc_event_t *event, *next_event;
|
||||
isc_task_t *task;
|
||||
@@ -311,12 +251,21 @@ isc__app_ctxrun(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_run(void) {
|
||||
return (isc__app_ctxrun((isc_appctx_t *)&isc_g_appctx));
|
||||
isc_app_run(void) {
|
||||
isc_result_t result;
|
||||
is_running = ISC_TRUE;
|
||||
result = isc_app_ctxrun((isc_appctx_t *)&isc_g_appctx);
|
||||
is_running = ISC_FALSE;
|
||||
return result;
|
||||
}
|
||||
|
||||
bool
|
||||
isc_app_isrunning() {
|
||||
return (is_running);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxshutdown(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxshutdown(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
bool want_kill = true;
|
||||
|
||||
@@ -340,12 +289,12 @@ isc__app_ctxshutdown(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_shutdown(void) {
|
||||
return (isc__app_ctxshutdown((isc_appctx_t *)&isc_g_appctx));
|
||||
isc_app_shutdown(void) {
|
||||
return (isc_app_ctxshutdown((isc_appctx_t *)&isc_g_appctx));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
bool want_kill = true;
|
||||
|
||||
@@ -370,12 +319,12 @@ isc__app_ctxsuspend(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_reload(void) {
|
||||
return (isc__app_ctxsuspend((isc_appctx_t *)&isc_g_appctx));
|
||||
isc_app_reload(void) {
|
||||
return (isc_app_ctxsuspend((isc_appctx_t *)&isc_g_appctx));
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_ctxfinish(isc_appctx_t *ctx0) {
|
||||
isc_app_ctxfinish(isc_appctx_t *ctx0) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -384,12 +333,12 @@ isc__app_ctxfinish(isc_appctx_t *ctx0) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_finish(void) {
|
||||
isc__app_ctxfinish((isc_appctx_t *)&isc_g_appctx);
|
||||
isc_app_finish(void) {
|
||||
isc_app_ctxfinish((isc_appctx_t *)&isc_g_appctx);
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_block(void) {
|
||||
isc_app_block(void) {
|
||||
REQUIRE(isc_g_appctx.running);
|
||||
REQUIRE(!isc_g_appctx.blocked);
|
||||
|
||||
@@ -398,7 +347,7 @@ isc__app_block(void) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__app_unblock(void) {
|
||||
isc_app_unblock(void) {
|
||||
REQUIRE(isc_g_appctx.running);
|
||||
REQUIRE(isc_g_appctx.blocked);
|
||||
|
||||
@@ -407,7 +356,7 @@ isc__app_unblock(void) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
isc_appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
isc__appctx_t *ctx;
|
||||
|
||||
REQUIRE(mctx != NULL);
|
||||
@@ -434,7 +383,7 @@ isc__appctx_create(isc_mem_t *mctx, isc_appctx_t **ctxp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_destroy(isc_appctx_t **ctxp) {
|
||||
isc_appctx_destroy(isc_appctx_t **ctxp) {
|
||||
isc__appctx_t *ctx;
|
||||
|
||||
REQUIRE(ctxp != NULL);
|
||||
@@ -447,7 +396,7 @@ isc__appctx_destroy(isc_appctx_t **ctxp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) {
|
||||
isc_appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -456,7 +405,7 @@ isc__appctx_settaskmgr(isc_appctx_t *ctx0, isc_taskmgr_t *taskmgr) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) {
|
||||
isc_appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -465,7 +414,7 @@ isc__appctx_setsocketmgr(isc_appctx_t *ctx0, isc_socketmgr_t *socketmgr) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) {
|
||||
isc_appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) {
|
||||
isc__appctx_t *ctx = (isc__appctx_t *)ctx0;
|
||||
|
||||
REQUIRE(VALID_APPCTX(ctx));
|
||||
@@ -474,7 +423,7 @@ isc__appctx_settimermgr(isc_appctx_t *ctx0, isc_timermgr_t *timermgr) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__app_register(void) {
|
||||
isc_app_register(void) {
|
||||
return (isc_app_register(isc__appctx_create));
|
||||
}
|
||||
|
||||
|
||||
+73
-73
@@ -9,25 +9,25 @@ closelog
|
||||
getpassphrase
|
||||
@END PKCS11
|
||||
isc___socketmgr_maxudp
|
||||
isc__app_block
|
||||
isc__app_ctxfinish
|
||||
isc__app_ctxonrun
|
||||
isc__app_ctxrun
|
||||
isc__app_ctxshutdown
|
||||
isc__app_ctxstart
|
||||
isc__app_ctxsuspend
|
||||
isc__app_finish
|
||||
isc__app_onrun
|
||||
isc__app_reload
|
||||
isc__app_run
|
||||
isc__app_shutdown
|
||||
isc__app_start
|
||||
isc__app_unblock
|
||||
isc__appctx_create
|
||||
isc__appctx_destroy
|
||||
isc__appctx_setsocketmgr
|
||||
isc__appctx_settaskmgr
|
||||
isc__appctx_settimermgr
|
||||
isc_app_block
|
||||
isc_app_ctxfinish
|
||||
isc_app_ctxonrun
|
||||
isc_app_ctxrun
|
||||
isc_app_ctxshutdown
|
||||
isc_app_ctxstart
|
||||
isc_app_ctxsuspend
|
||||
isc_app_finish
|
||||
isc_app_onrun
|
||||
isc_app_reload
|
||||
isc_app_run
|
||||
isc_app_shutdown
|
||||
isc_app_start
|
||||
isc_app_unblock
|
||||
isc_appctx_create
|
||||
isc_appctx_destroy
|
||||
isc_appctx_setsocketmgr
|
||||
isc_appctx_settaskmgr
|
||||
isc_appctx_settimermgr
|
||||
isc__buffer_activeregion
|
||||
isc__buffer_add
|
||||
isc__buffer_availableregion
|
||||
@@ -51,61 +51,61 @@ isc__buffer_remainingregion
|
||||
isc__buffer_setactive
|
||||
isc__buffer_subtract
|
||||
isc__buffer_usedregion
|
||||
isc__mem_allocate
|
||||
isc__mem_free
|
||||
isc__mem_get
|
||||
isc__mem_printactive
|
||||
isc__mem_put
|
||||
isc__mem_putanddetach
|
||||
isc__mem_reallocate
|
||||
isc__mem_strdup
|
||||
isc__mempool_get
|
||||
isc__mempool_put
|
||||
isc__socket_accept
|
||||
isc__socket_attach
|
||||
isc__socket_bind
|
||||
isc__socket_cancel
|
||||
isc__socket_cleanunix
|
||||
isc__socket_close
|
||||
isc__socket_connect
|
||||
isc__socket_create
|
||||
isc__socket_detach
|
||||
isc__socket_dscp
|
||||
isc__socket_dup
|
||||
isc__socket_filter
|
||||
isc__socket_getfd
|
||||
isc__socket_getname
|
||||
isc__socket_getpeername
|
||||
isc__socket_getsockname
|
||||
isc__socket_gettag
|
||||
isc__socket_gettype
|
||||
isc__socket_ipv6only
|
||||
isc__socket_isbound
|
||||
isc__socket_listen
|
||||
isc__socket_open
|
||||
isc__socket_permunix
|
||||
isc__socket_recv
|
||||
isc__socket_recv2
|
||||
isc__socket_recvv
|
||||
isc__socket_register
|
||||
isc__socket_send
|
||||
isc__socket_sendto
|
||||
isc__socket_sendto2
|
||||
isc__socket_sendtov
|
||||
isc__socket_sendtov2
|
||||
isc__socket_sendv
|
||||
isc__socket_setname
|
||||
isc__socketmgr_create
|
||||
isc__socketmgr_create2
|
||||
isc__socketmgr_destroy
|
||||
isc__socketmgr_getmaxsockets
|
||||
isc__socketmgr_setreserved
|
||||
isc__socketmgr_setstats
|
||||
isc_mem_allocate
|
||||
isc_mem_free
|
||||
isc_mem_get
|
||||
isc_mem_printactive
|
||||
isc_mem_put
|
||||
isc_mem_putanddetach
|
||||
isc_mem_reallocate
|
||||
isc_mem_strdup
|
||||
isc_mempool_get
|
||||
isc_mempool_put
|
||||
isc_socket_accept
|
||||
isc_socket_attach
|
||||
isc_socket_bind
|
||||
isc_socket_cancel
|
||||
isc_socket_cleanunix
|
||||
isc_socket_close
|
||||
isc_socket_connect
|
||||
isc_socket_create
|
||||
isc_socket_detach
|
||||
isc_socket_dscp
|
||||
isc_socket_dup
|
||||
isc_socket_filter
|
||||
isc_socket_getfd
|
||||
isc_socket_getname
|
||||
isc_socket_getpeername
|
||||
isc_socket_getsockname
|
||||
isc_socket_gettag
|
||||
isc_socket_gettype
|
||||
isc_socket_ipv6only
|
||||
isc_socket_isbound
|
||||
isc_socket_listen
|
||||
isc_socket_open
|
||||
isc_socket_permunix
|
||||
isc_socket_recv
|
||||
isc_socket_recv2
|
||||
isc_socket_recvv
|
||||
isc_socket_register
|
||||
isc_socket_send
|
||||
isc_socket_sendto
|
||||
isc_socket_sendto2
|
||||
isc_socket_sendtov
|
||||
isc_socket_sendtov2
|
||||
isc_socket_sendv
|
||||
isc_socket_setname
|
||||
isc_socketmgr_create
|
||||
isc_socketmgr_create2
|
||||
isc_socketmgr_destroy
|
||||
isc_socketmgr_getmaxsockets
|
||||
isc_socketmgr_setreserved
|
||||
isc_socketmgr_setstats
|
||||
isc__strerror
|
||||
isc__task_getname
|
||||
isc__task_gettag
|
||||
isc__task_unsendrange
|
||||
isc__taskmgr_mode
|
||||
isc_task_getname
|
||||
isc_task_gettag
|
||||
isc_task_unsendrange
|
||||
isc_taskmgr_mode
|
||||
isc__taskmgr_pause
|
||||
isc__taskmgr_resume
|
||||
isc_aes128_crypt
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@@ZLIB_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@@ZLIB_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
</Link>
|
||||
@@ -168,7 +168,7 @@ copy InstallFiles ..\Build\Debug\
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@@LIBXML2_LIB@@ZLIB_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>@LIBXML2_LIB@@OPENSSL_LIB@@ZLIB_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
|
||||
+47
-86
@@ -1811,19 +1811,19 @@ socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
|
||||
|
||||
if (dup_socket) {
|
||||
#ifndef ISC_ALLOW_MAPPED
|
||||
isc__socket_ipv6only(sock, true);
|
||||
isc_socket_ipv6only(sock, true);
|
||||
#endif
|
||||
|
||||
if (dup_socket->bound) {
|
||||
isc_sockaddr_t local;
|
||||
|
||||
result = isc__socket_getsockname(dup_socket, &local);
|
||||
result = isc_socket_getsockname(dup_socket, &local);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_socket_close(sock);
|
||||
return (result);
|
||||
}
|
||||
result = isc__socket_bind(sock, &local,
|
||||
ISC_SOCKET_REUSEADDRESS);
|
||||
result = isc_socket_bind(sock, &local,
|
||||
ISC_SOCKET_REUSEADDRESS);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_socket_close(sock);
|
||||
return (result);
|
||||
@@ -1849,14 +1849,14 @@ socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
|
||||
isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
|
||||
isc_socket_t **socketp)
|
||||
{
|
||||
return (socket_create(manager, pf, type, socketp, NULL));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_dup(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
isc_socket_dup(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
REQUIRE(socketp != NULL && *socketp == NULL);
|
||||
|
||||
@@ -1876,7 +1876,7 @@ isc_socket_open(isc_socket_t *sock) {
|
||||
* Attach to a socket. Caller must explicitly detach when it is done.
|
||||
*/
|
||||
void
|
||||
isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
isc_socket_attach(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
REQUIRE(socketp != NULL && *socketp == NULL);
|
||||
|
||||
@@ -1893,7 +1893,7 @@ isc__socket_attach(isc_socket_t *sock, isc_socket_t **socketp) {
|
||||
* up by destroying the socket.
|
||||
*/
|
||||
void
|
||||
isc__socket_detach(isc_socket_t **socketp) {
|
||||
isc_socket_detach(isc_socket_t **socketp) {
|
||||
isc_socket_t *sock;
|
||||
|
||||
REQUIRE(socketp != NULL);
|
||||
@@ -2651,12 +2651,12 @@ SocketIoThread(LPVOID ThreadContext) {
|
||||
* Create a new socket manager.
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
|
||||
isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
|
||||
return (isc_socketmgr_create2(mctx, managerp, 0));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
|
||||
unsigned int maxsocks)
|
||||
{
|
||||
isc_socketmgr_t *manager;
|
||||
@@ -2724,7 +2724,7 @@ isc_socketmgr_setstats(isc_socketmgr_t *manager, isc_stats_t *stats) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socketmgr_destroy(isc_socketmgr_t **managerp) {
|
||||
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
|
||||
isc_socketmgr_t *manager;
|
||||
int i;
|
||||
isc_mem_t *mctx;
|
||||
@@ -2849,7 +2849,7 @@ socket_recv(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc;_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
@@ -2920,7 +2920,7 @@ isc__socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_recv(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_socket_recv(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg)
|
||||
{
|
||||
@@ -2959,7 +2959,7 @@ isc__socket_recv(isc_socket_t *sock, isc_region_t *region,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_recv2(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_socket_recv2(isc_socket_t *sock, isc_region_t *region,
|
||||
unsigned int minimum, isc_task_t *task,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
{
|
||||
@@ -3070,7 +3070,7 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
/*
|
||||
@@ -3081,7 +3081,7 @@ isc__socket_send(isc_socket_t *sock, isc_region_t *region,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendto(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_socket_sendto(isc_socket_t *sock, isc_region_t *region,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
|
||||
{
|
||||
@@ -3125,7 +3125,7 @@ isc__socket_sendto(isc_socket_t *sock, isc_region_t *region,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
return (isc_socket_sendtov2(sock, buflist, task, action, arg, NULL,
|
||||
@@ -3133,8 +3133,8 @@ isc__socket_sendv(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo)
|
||||
{
|
||||
return (isc_socket_sendtov2(sock, buflist, task, action, arg, address,
|
||||
@@ -3142,10 +3142,10 @@ isc__socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
isc_socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
unsigned int flags)
|
||||
unsigned int flags)
|
||||
{
|
||||
isc_socketevent_t *dev;
|
||||
isc_socketmgr_t *manager;
|
||||
@@ -3199,9 +3199,9 @@ isc__socket_sendtov2(isc_socket_t *sock, isc_bufferlist_t *buflist,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_task_t *task,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_task_t *task,
|
||||
const isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
|
||||
isc_socketevent_t *event, unsigned int flags)
|
||||
{
|
||||
isc_result_t ret;
|
||||
|
||||
@@ -3233,8 +3233,8 @@ isc__socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_task_t *task,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr,
|
||||
isc_socket_options_t options)
|
||||
isc_socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr,
|
||||
isc_socket_options_t options)
|
||||
{
|
||||
int bind_errno;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
@@ -3301,7 +3301,7 @@ isc__socket_bind(isc_socket_t *sock, const isc_sockaddr_t *sockaddr,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_filter(isc_socket_t *sock, const char *filter) {
|
||||
isc_socket_filter(isc_socket_t *sock, const char *filter) {
|
||||
UNUSED(sock);
|
||||
UNUSED(filter);
|
||||
|
||||
@@ -3320,7 +3320,7 @@ isc__socket_filter(isc_socket_t *sock, const char *filter) {
|
||||
* as well keep things simple rather than having to track them.
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_listen(isc_socket_t *sock, unsigned int backlog) {
|
||||
isc_socket_listen(isc_socket_t *sock, unsigned int backlog) {
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
#if defined(ISC_PLATFORM_HAVETFO) && defined(TCP_FASTOPEN)
|
||||
char on = 1;
|
||||
@@ -3379,8 +3379,8 @@ isc__socket_listen(isc_socket_t *sock, unsigned int backlog) {
|
||||
* This should try to do aggressive accept() XXXMLG
|
||||
*/
|
||||
isc_result_t
|
||||
isc__socket_accept(isc_socket_t *sock,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
isc_socket_accept(isc_socket_t *sock,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
isc_socket_newconnev_t *adev;
|
||||
isc_socketmgr_t *manager;
|
||||
@@ -3497,8 +3497,8 @@ isc__socket_accept(isc_socket_t *sock,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
isc_socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr,
|
||||
isc_task_t *task, isc_taskaction_t action, void *arg)
|
||||
{
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
isc_socket_connev_t *cdev;
|
||||
@@ -3628,7 +3628,7 @@ isc__socket_connect(isc_socket_t *sock, const isc_sockaddr_t *addr,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
isc_socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
isc_result_t result;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -3658,7 +3658,7 @@ isc__socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
ISC_SOCKADDR_LEN_T len;
|
||||
isc_result_t result;
|
||||
char strbuf[ISC_STRERRORSIZE];
|
||||
@@ -3705,7 +3705,7 @@ isc__socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) {
|
||||
* queued for task "task" of type "how". "how" is a bitmask.
|
||||
*/
|
||||
void
|
||||
isc__socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
|
||||
isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
|
||||
@@ -3831,7 +3831,7 @@ isc__socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
|
||||
}
|
||||
|
||||
isc_sockettype_t
|
||||
isc__socket_gettype(isc_socket_t *sock) {
|
||||
isc_socket_gettype(isc_socket_t *sock) {
|
||||
isc_sockettype_t type;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
@@ -3851,31 +3851,8 @@ isc__socket_gettype(isc_socket_t *sock) {
|
||||
return (type);
|
||||
}
|
||||
|
||||
bool
|
||||
isc__socket_isbound(isc_socket_t *sock) {
|
||||
bool val;
|
||||
|
||||
REQUIRE(VALID_SOCKET(sock));
|
||||
|
||||
LOCK(&sock->lock);
|
||||
CONSISTENT(sock);
|
||||
|
||||
/*
|
||||
* make sure that the socket's not closed
|
||||
*/
|
||||
if (sock->fd == INVALID_SOCKET) {
|
||||
UNLOCK(&sock->lock);
|
||||
return (false);
|
||||
}
|
||||
|
||||
val = ((sock->bound) ? true : false);
|
||||
UNLOCK(&sock->lock);
|
||||
|
||||
return (val);
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_ipv6only(isc_socket_t *sock, bool yes) {
|
||||
isc_socket_ipv6only(isc_socket_t *sock, bool yes) {
|
||||
#if defined(IPV6_V6ONLY)
|
||||
int onoff = yes ? 1 : 0;
|
||||
#else
|
||||
@@ -3893,7 +3870,7 @@ isc__socket_ipv6only(isc_socket_t *sock, bool yes) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) {
|
||||
isc_socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) {
|
||||
#if !defined(IP_TOS) && !defined(IPV6_TCLASS)
|
||||
UNUSED(dscp);
|
||||
#else
|
||||
@@ -3921,14 +3898,14 @@ isc__socket_dscp(isc_socket_t *sock, isc_dscp_t dscp) {
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_cleanunix(const isc_sockaddr_t *addr, bool active) {
|
||||
isc_socket_cleanunix(const isc_sockaddr_t *addr, bool active) {
|
||||
UNUSED(addr);
|
||||
UNUSED(active);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc__socket_permunix(const isc_sockaddr_t *addr, uint32_t perm,
|
||||
uint32_t owner, uint32_t group)
|
||||
isc_socket_permunix(const isc_sockaddr_t *addr, uint32_t perm,
|
||||
uint32_t owner, uint32_t group)
|
||||
{
|
||||
UNUSED(addr);
|
||||
UNUSED(perm);
|
||||
@@ -3938,7 +3915,7 @@ isc__socket_permunix(const isc_sockaddr_t *addr, uint32_t perm,
|
||||
}
|
||||
|
||||
void
|
||||
isc__socket_setname(isc_socket_t *socket, const char *name, void *tag) {
|
||||
isc_socket_setname(isc_socket_t *socket, const char *name, void *tag) {
|
||||
|
||||
/*
|
||||
* Name 'socket'.
|
||||
@@ -3953,33 +3930,26 @@ isc__socket_setname(isc_socket_t *socket, const char *name, void *tag) {
|
||||
}
|
||||
|
||||
const char *
|
||||
isc__socket_getname(isc_socket_t *socket) {
|
||||
isc_socket_getname(isc_socket_t *socket) {
|
||||
return (socket->name);
|
||||
}
|
||||
|
||||
void *
|
||||
isc__socket_gettag(isc_socket_t *socket) {
|
||||
isc_socket_gettag(isc_socket_t *socket) {
|
||||
return (socket->tag);
|
||||
}
|
||||
|
||||
int
|
||||
isc__socket_getfd(isc_socket_t *socket) {
|
||||
isc_socket_getfd(isc_socket_t *socket) {
|
||||
return ((short) socket->fd);
|
||||
}
|
||||
|
||||
void
|
||||
isc__socketmgr_setreserved(isc_socketmgr_t *manager, uint32_t reserved) {
|
||||
isc_socketmgr_setreserved(isc_socketmgr_t *manager, uint32_t reserved) {
|
||||
UNUSED(manager);
|
||||
UNUSED(reserved);
|
||||
}
|
||||
|
||||
void
|
||||
isc___socketmgr_maxudp(isc_socketmgr_t *manager, int maxudp) {
|
||||
|
||||
UNUSED(manager);
|
||||
UNUSED(maxudp);
|
||||
}
|
||||
|
||||
isc_socketevent_t *
|
||||
isc_socket_socketevent(isc_mem_t *mctx, void *sender,
|
||||
isc_eventtype_t eventtype, isc_taskaction_t action,
|
||||
@@ -4247,15 +4217,6 @@ isc_socketmgr_renderjson(isc_socketmgr_t *mgr, json_object *stats) {
|
||||
}
|
||||
#endif /* HAVE_JSON */
|
||||
|
||||
/*
|
||||
* Replace ../socket_api.c
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc__socket_register(void) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_socketmgr_createinctx(isc_mem_t *mctx, isc_appctx_t *actx,
|
||||
isc_socketmgr_t **managerp)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;@OPENSSL_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
</Link>
|
||||
@@ -99,7 +99,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\dns\win32\$(Configuration);..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libdns.lib;libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libdns.lib;libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
@@ -98,7 +98,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>..\..\dns\win32\$(Configuration);..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libdns.lib;libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libdns.lib;libisc.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
|
||||
+45
-1
@@ -1048,6 +1048,49 @@ ns_client_sendraw(ns_client_t *client, dns_message_t *message) {
|
||||
ns_client_next(client, result);
|
||||
}
|
||||
|
||||
static void
|
||||
client_pseudosend(ns_client_t *client, uint16_t id) {
|
||||
isc_result_t result;
|
||||
unsigned char *data;
|
||||
isc_buffer_t buffer;
|
||||
isc_buffer_t tcpbuffer;
|
||||
isc_region_t r;
|
||||
unsigned char sendbuf[SEND_BUFFER_SIZE];
|
||||
result = client_allocsendbuf(client, &buffer, &tcpbuffer, 0,
|
||||
sendbuf, &data);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
isc_buffer_putuint16(&buffer, id);
|
||||
isc_buffer_putuint8(&buffer, 0x81);
|
||||
isc_buffer_putuint8(&buffer, 0x80);
|
||||
isc_buffer_putuint16(&buffer, 0);
|
||||
isc_buffer_putuint16(&buffer, 0);
|
||||
isc_buffer_putuint16(&buffer, 0);
|
||||
isc_buffer_putuint16(&buffer, 0);
|
||||
if (client->sendcb != NULL) {
|
||||
client->sendcb(&buffer);
|
||||
} else if (TCP_CLIENT(client)) {
|
||||
isc_buffer_usedregion(&buffer, &r);
|
||||
isc_buffer_putuint16(&tcpbuffer, (uint16_t) r.length);
|
||||
isc_buffer_add(&tcpbuffer, r.length);
|
||||
result = client_sendpkg(client, &tcpbuffer);
|
||||
} else {
|
||||
result = client_sendpkg(client, &buffer);
|
||||
}
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
return;
|
||||
}
|
||||
done:
|
||||
if (client->tcpbuf != NULL) {
|
||||
isc_mem_put(client->mctx, client->tcpbuf, TCP_BUFFER_SIZE);
|
||||
client->tcpbuf = NULL;
|
||||
}
|
||||
ns_client_next(client, result);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
client_send(ns_client_t *client) {
|
||||
isc_result_t result;
|
||||
@@ -2346,7 +2389,6 @@ ns__client_request(isc_task_t *task, isc_event_t *event) {
|
||||
}
|
||||
|
||||
isc_netaddr_fromsockaddr(&netaddr, &client->peeraddr);
|
||||
|
||||
#if NS_CLIENT_DROPPORT
|
||||
if (ns_client_dropport(isc_sockaddr_getport(&client->peeraddr)) ==
|
||||
DROPPORT_REQUEST) {
|
||||
@@ -2403,6 +2445,8 @@ ns__client_request(isc_task_t *task, isc_event_t *event) {
|
||||
ns_client_next(client, result);
|
||||
return;
|
||||
}
|
||||
client_pseudosend(client, id);
|
||||
return;
|
||||
|
||||
/*
|
||||
* The client object handles requests, not responses.
|
||||
|
||||
@@ -43,13 +43,16 @@ LIBNS_EXTERNAL_DATA isc_logcategory_t ns_categories[] = {
|
||||
* \#define to <ns/log.h>.
|
||||
*/
|
||||
LIBNS_EXTERNAL_DATA isc_logmodule_t ns_modules[] = {
|
||||
{ "ns/main", 0 },
|
||||
{ "ns/client", 0 },
|
||||
{ "ns/server", 0 },
|
||||
{ "ns/query", 0 },
|
||||
{ "ns/interfacemgr", 0 },
|
||||
{ "ns/update", 0 },
|
||||
{ "ns/xfer-in", 0 },
|
||||
{ "ns/xfer-out", 0 },
|
||||
{ "ns/notify", 0 },
|
||||
{ "ns/control", 0 },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
|
||||
+4
-4
@@ -1910,8 +1910,8 @@ query_addadditional(void *arg, const dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
DNS_TRUST_GLUE(rdataset->trust)))
|
||||
{
|
||||
/* validate() may change rdataset->trust */
|
||||
invalid = !validate(client, db, fname,
|
||||
rdataset, sigrdataset);
|
||||
invalid = validate(client, db, fname,
|
||||
rdataset, sigrdataset);
|
||||
}
|
||||
if (invalid && DNS_TRUST_PENDING(rdataset->trust)) {
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
@@ -1982,8 +1982,8 @@ query_addadditional(void *arg, const dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
DNS_TRUST_GLUE(rdataset->trust)))
|
||||
{
|
||||
/* validate() may change rdataset->trust */
|
||||
invalid = !validate(client, db, fname,
|
||||
rdataset, sigrdataset);
|
||||
invalid = validate(client, db, fname,
|
||||
rdataset, sigrdataset);
|
||||
}
|
||||
|
||||
if (invalid && DNS_TRUST_PENDING(rdataset->trust)) {
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
</Link>
|
||||
@@ -98,7 +98,7 @@
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;@LIBXML2_LIB@@OPENSSL_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<ModuleDefinitionFile>$(ProjectName).def</ModuleDefinitionFile>
|
||||
<ImportLibrary>.\$(Configuration)\$(ProjectName).lib</ImportLibrary>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);..\..\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);..\..\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);..\..\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);..\..\irs\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;libirs.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
|
||||
@@ -98,7 +98,7 @@
|
||||
<OutputFile>..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
|
||||
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
|
||||
<AdditionalLibraryDirectories>..\..\isc\win32\$(Configuration);..\..\dns\win32\$(Configuration);..\..\isccfg\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>@OPENSSL_LIB@libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libisc.lib;libdns.lib;libisccfg.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,485 +0,0 @@
|
||||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_pthread.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro figures out how to build C programs using POSIX threads. It
|
||||
# sets the PTHREAD_LIBS output variable to the threads library and linker
|
||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
|
||||
# flags that are needed. (The user can also force certain compiler
|
||||
# flags/libs to be tested by setting these environment variables.)
|
||||
#
|
||||
# Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
# multi-threaded programs (defaults to the value of CC otherwise). (This
|
||||
# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also to link with them as well. For example, you might link with
|
||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
#
|
||||
# If you are only building threaded programs, you may wish to use these
|
||||
# variables in your default LIBS, CFLAGS, and CC:
|
||||
#
|
||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
# CC="$PTHREAD_CC"
|
||||
#
|
||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
|
||||
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
#
|
||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
# PTHREAD_CFLAGS.
|
||||
#
|
||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
|
||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
|
||||
# is not found. If ACTION-IF-FOUND is not specified, the default action
|
||||
# will define HAVE_PTHREAD.
|
||||
#
|
||||
# Please let the authors know if this macro fails on any platform, or if
|
||||
# you have any other suggestions or comments. This macro was based on work
|
||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
|
||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
|
||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
|
||||
# grateful for the helpful feedback of numerous users.
|
||||
#
|
||||
# Updated for Autoconf 2.68 by Daniel Richard G.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
|
||||
#
|
||||
# This program 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 (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 24
|
||||
|
||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
AC_DEFUN([AX_PTHREAD], [
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_PROG_SED])
|
||||
AC_LANG_PUSH([C])
|
||||
ax_pthread_ok=no
|
||||
|
||||
# We used to check for pthread.h first, but this fails if pthread.h
|
||||
# requires special compiler flags (e.g. on Tru64 or Sequent).
|
||||
# It gets checked for in the link test anyway.
|
||||
|
||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
# etcetera environment variables, and if threads linking works using
|
||||
# them:
|
||||
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
|
||||
ax_pthread_save_CC="$CC"
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_LIBS="$LIBS"
|
||||
AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test "x$ax_pthread_ok" = "xno"; then
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
fi
|
||||
CC="$ax_pthread_save_CC"
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
LIBS="$ax_pthread_save_LIBS"
|
||||
fi
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
# names; the ordering is very important because some systems
|
||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
# libraries is broken (non-POSIX).
|
||||
|
||||
# Create a list of thread flags to try. Items starting with a "-" are
|
||||
# C compiler flags, and other items are library names, except for "none"
|
||||
# which indicates that we try without any flags at all, and "pthread-config"
|
||||
# which is a program returning the flags for the Pth emulation library.
|
||||
|
||||
ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
|
||||
# pthreads: AIX (must check this before -lpthread)
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
|
||||
# (Note: HP C rejects this with "bad form for `-t' option")
|
||||
# -pthreads: Solaris/gcc (Note: HP C also rejects)
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads and
|
||||
# -D_REENTRANT too), HP C (must be checked before -lpthread, which
|
||||
# is present but should not be used directly; and before -mthreads,
|
||||
# because the compiler interprets this as "-mt" + "-hreads")
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
|
||||
case $host_os in
|
||||
|
||||
freebsd*)
|
||||
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
|
||||
ax_pthread_flags="-kthread lthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
hpux*)
|
||||
|
||||
# From the cc(1) man page: "[-mt] Sets various -D flags to enable
|
||||
# multi-threading and also sets -lpthread."
|
||||
|
||||
ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
openedition*)
|
||||
|
||||
# IBM z/OS requires a feature-test macro to be defined in order to
|
||||
# enable POSIX threads at all, so give the user a hint if this is
|
||||
# not set. (We don't define these ourselves, as they can affect
|
||||
# other portions of the system API in unpredictable ways.)
|
||||
|
||||
AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
|
||||
[
|
||||
# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
|
||||
AX_PTHREAD_ZOS_MISSING
|
||||
# endif
|
||||
],
|
||||
[AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
|
||||
;;
|
||||
|
||||
solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (N.B.: The stubs are missing
|
||||
# pthread_cleanup_push, or rather a function called by this macro,
|
||||
# so we could check for that, but who knows whether they'll stub
|
||||
# that too in a future libc.) So we'll check first for the
|
||||
# standard Solaris way of linking pthreads (-mt -lpthread).
|
||||
|
||||
ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
|
||||
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
|
||||
|
||||
AS_IF([test "x$GCC" = "xyes"],
|
||||
[ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
|
||||
|
||||
# The presence of a feature test macro requesting re-entrant function
|
||||
# definitions is, on some systems, a strong hint that pthreads support is
|
||||
# correctly enabled
|
||||
|
||||
case $host_os in
|
||||
darwin* | hpux* | linux* | osf* | solaris*)
|
||||
ax_pthread_check_macro="_REENTRANT"
|
||||
;;
|
||||
|
||||
aix*)
|
||||
ax_pthread_check_macro="_THREAD_SAFE"
|
||||
;;
|
||||
|
||||
*)
|
||||
ax_pthread_check_macro="--"
|
||||
;;
|
||||
esac
|
||||
AS_IF([test "x$ax_pthread_check_macro" = "x--"],
|
||||
[ax_pthread_check_cond=0],
|
||||
[ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
|
||||
|
||||
# Are we compiling with Clang?
|
||||
|
||||
AC_CACHE_CHECK([whether $CC is Clang],
|
||||
[ax_cv_PTHREAD_CLANG],
|
||||
[ax_cv_PTHREAD_CLANG=no
|
||||
# Note that Autoconf sets GCC=yes for Clang as well as GCC
|
||||
if test "x$GCC" = "xyes"; then
|
||||
AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
|
||||
[/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
|
||||
# if defined(__clang__) && defined(__llvm__)
|
||||
AX_PTHREAD_CC_IS_CLANG
|
||||
# endif
|
||||
],
|
||||
[ax_cv_PTHREAD_CLANG=yes])
|
||||
fi
|
||||
])
|
||||
ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
|
||||
|
||||
ax_pthread_clang_warning=no
|
||||
|
||||
# Clang needs special handling, because older versions handle the -pthread
|
||||
# option in a rather... idiosyncratic way
|
||||
|
||||
if test "x$ax_pthread_clang" = "xyes"; then
|
||||
|
||||
# Clang takes -pthread; it has never supported any other flag
|
||||
|
||||
# (Note 1: This will need to be revisited if a system that Clang
|
||||
# supports has POSIX threads in a separate library. This tends not
|
||||
# to be the way of modern systems, but it's conceivable.)
|
||||
|
||||
# (Note 2: On some systems, notably Darwin, -pthread is not needed
|
||||
# to get POSIX threads support; the API is always present and
|
||||
# active. We could reasonably leave PTHREAD_CFLAGS empty. But
|
||||
# -pthread does define _REENTRANT, and while the Darwin headers
|
||||
# ignore this macro, third-party headers might not.)
|
||||
|
||||
PTHREAD_CFLAGS="-pthread"
|
||||
PTHREAD_LIBS=
|
||||
|
||||
ax_pthread_ok=yes
|
||||
|
||||
# However, older versions of Clang make a point of warning the user
|
||||
# that, in an invocation where only linking and no compilation is
|
||||
# taking place, the -pthread option has no effect ("argument unused
|
||||
# during compilation"). They expect -pthread to be passed in only
|
||||
# when source code is being compiled.
|
||||
#
|
||||
# Problem is, this is at odds with the way Automake and most other
|
||||
# C build frameworks function, which is that the same flags used in
|
||||
# compilation (CFLAGS) are also used in linking. Many systems
|
||||
# supported by AX_PTHREAD require exactly this for POSIX threads
|
||||
# support, and in fact it is often not straightforward to specify a
|
||||
# flag that is used only in the compilation phase and not in
|
||||
# linking. Such a scenario is extremely rare in practice.
|
||||
#
|
||||
# Even though use of the -pthread flag in linking would only print
|
||||
# a warning, this can be a nuisance for well-run software projects
|
||||
# that build with -Werror. So if the active version of Clang has
|
||||
# this misfeature, we search for an option to squash it.
|
||||
|
||||
AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
|
||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
|
||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
|
||||
# Create an alternate version of $ac_link that compiles and
|
||||
# links in two steps (.c -> .o, .o -> exe) instead of one
|
||||
# (.c -> exe), because the warning occurs only in the second
|
||||
# step
|
||||
ax_pthread_save_ac_link="$ac_link"
|
||||
ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
|
||||
ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
|
||||
ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
|
||||
AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
|
||||
CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
|
||||
ac_link="$ax_pthread_save_ac_link"
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
|
||||
[ac_link="$ax_pthread_2step_ac_link"
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
|
||||
[break])
|
||||
])
|
||||
done
|
||||
ac_link="$ax_pthread_save_ac_link"
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
|
||||
ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
|
||||
])
|
||||
|
||||
case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
|
||||
no | unknown) ;;
|
||||
*) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
|
||||
esac
|
||||
|
||||
fi # $ax_pthread_clang = yes
|
||||
|
||||
if test "x$ax_pthread_ok" = "xno"; then
|
||||
for ax_pthread_try_flag in $ax_pthread_flags; do
|
||||
|
||||
case $ax_pthread_try_flag in
|
||||
none)
|
||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
;;
|
||||
|
||||
-mt,pthread)
|
||||
AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
|
||||
PTHREAD_CFLAGS="-mt"
|
||||
PTHREAD_LIBS="-lpthread"
|
||||
;;
|
||||
|
||||
-*)
|
||||
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
|
||||
PTHREAD_CFLAGS="$ax_pthread_try_flag"
|
||||
;;
|
||||
|
||||
pthread-config)
|
||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
||||
AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
|
||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
|
||||
PTHREAD_LIBS="-l$ax_pthread_try_flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
# need a special flag -Kthread to make this header compile.)
|
||||
# We check for pthread_join because it is in -lpthread on IRIX
|
||||
# while pthread_create is in libc. We check for pthread_attr_init
|
||||
# due to DEC craziness with -lpthreads. We check for
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
# if $ax_pthread_check_cond
|
||||
# error "$ax_pthread_check_macro must be defined"
|
||||
# endif
|
||||
static void routine(void *a) { a = 0; }
|
||||
static void *start_routine(void *a) { return a; }],
|
||||
[pthread_t th; pthread_attr_t attr;
|
||||
pthread_create(&th, 0, start_routine, 0);
|
||||
pthread_join(th, 0);
|
||||
pthread_attr_init(&attr);
|
||||
pthread_cleanup_push(routine, 0);
|
||||
pthread_cleanup_pop(0) /* ; */])],
|
||||
[ax_pthread_ok=yes],
|
||||
[])
|
||||
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
LIBS="$ax_pthread_save_LIBS"
|
||||
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
|
||||
# Various other checks:
|
||||
if test "x$ax_pthread_ok" = "xyes"; then
|
||||
ax_pthread_save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
|
||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
AC_CACHE_CHECK([for joinable pthread attribute],
|
||||
[ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||
[ax_cv_PTHREAD_JOINABLE_ATTR=unknown
|
||||
for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
[int attr = $ax_pthread_attr; return attr /* ; */])],
|
||||
[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
|
||||
[])
|
||||
done
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
|
||||
test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
|
||||
test "x$ax_pthread_joinable_attr_defined" != "xyes"],
|
||||
[AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
|
||||
[$ax_cv_PTHREAD_JOINABLE_ATTR],
|
||||
[Define to necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
ax_pthread_joinable_attr_defined=yes
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK([whether more special flags are required for pthreads],
|
||||
[ax_cv_PTHREAD_SPECIAL_FLAGS],
|
||||
[ax_cv_PTHREAD_SPECIAL_FLAGS=no
|
||||
case $host_os in
|
||||
solaris*)
|
||||
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
|
||||
;;
|
||||
esac
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
|
||||
test "x$ax_pthread_special_flags_added" != "xyes"],
|
||||
[PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
|
||||
ax_pthread_special_flags_added=yes])
|
||||
|
||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT],
|
||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
|
||||
test "x$ax_pthread_prio_inherit_defined" != "xyes"],
|
||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
|
||||
ax_pthread_prio_inherit_defined=yes
|
||||
])
|
||||
|
||||
CFLAGS="$ax_pthread_save_CFLAGS"
|
||||
LIBS="$ax_pthread_save_LIBS"
|
||||
|
||||
# More AIX lossage: compile with *_r variant
|
||||
if test "x$GCC" != "xyes"; then
|
||||
case $host_os in
|
||||
aix*)
|
||||
AS_CASE(["x/$CC"],
|
||||
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
|
||||
[#handle absolute path differently from PATH based program lookup
|
||||
AS_CASE(["x$CC"],
|
||||
[x/*],
|
||||
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
|
||||
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
|
||||
|
||||
AC_SUBST([PTHREAD_LIBS])
|
||||
AC_SUBST([PTHREAD_CFLAGS])
|
||||
AC_SUBST([PTHREAD_CC])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test "x$ax_pthread_ok" = "xyes"; then
|
||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||
:
|
||||
else
|
||||
ax_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
AC_LANG_POP
|
||||
])dnl AX_PTHREAD
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user