Ondřej Surý
2cbf633192
Add tests for the isc_siphash24 function
2019-05-20 19:01:31 +02:00
Ondřej Surý
a197df137a
Add reference SipHash 2-4 implementation
2019-05-20 19:01:31 +02:00
Ondřej Surý
0efc36c19a
Add portable <isc/endian.h> header
2019-05-20 19:01:31 +02:00
Ondřej Surý
eb8c9bdd55
Make lib/isc/app.c opaque and thread-safe
...
This work cleans up the API which includes couple of things:
1. Make the isc_appctx_t type fully opaque
2. Protect all access to the isc_app_t members via stdatomics
3. sigwait() is part of POSIX.1, remove dead non-sigwait code
4. Remove unused code: isc_appctx_set{taskmgr,sockmgr,timermgr}
2019-05-20 18:13:02 +02:00
Ondřej Surý
94cb73d96c
Use SO_REUSEPORT_LB on FreeBSD if available
2019-05-15 07:30:23 +02:00
Ondřej Surý
1c672367a0
Add safeguard against the other usage of SO_REUSEPORT
2019-05-15 07:30:23 +02:00
Ondřej Surý
ab389695b0
Add most useful relaxed and acquire-relase stdatomic convenience macros
...
The header file <isc/atomic.h> now contains convenience macros for
most useful explicit memory ordering for C11 stdatomics, only relaxed
and acquire-release semantics is being used. These macros SHOULD be
used instead of atomic_<func>_explicit functions.
2019-05-13 12:17:21 +07:00
Mark Andrews
f546769b8b
arm: just use the compiler's default yield support
2019-05-12 21:39:43 -04:00
Ondřej Surý
7ec9502ec5
Add benchmark for isc_{mem,mempool}_{get,put} operations
2019-05-11 04:02:35 +07:00
Mark Andrews
4886701c03
clear pointer before hash table
2019-05-07 10:37:37 +10:00
Evan Hunt
4e5edb35e4
simplify the isc_stat structure to take avantage of atomics
2019-05-06 12:53:45 -07:00
Evan Hunt
2f3876d187
refactor tcpquota and pipeline refs; allow special-case overrun in isc_quota
...
- if the TCP quota has been exceeded but there are no clients listening
for new connections on the interface, we can now force attachment to the
quota using isc_quota_force(), instead of carrying on with the quota not
attached.
- the TCP client quota is now referenced via a reference-counted
'ns_tcpconn' object, one of which is created whenever a client begins
listening for new connections, and attached to by members of that
client's pipeline group. when the last reference to the tcpconn
object is detached, it is freed and the TCP quota slot is released.
- reduce code duplication by adding mark_tcp_active() function
- convert counters to stdatomic
(cherry picked from commit a8dd133d270873b736c1be9bf50ebaa074f5b38f)
(cherry picked from commit 4a8fc979c4 )
2019-04-25 16:32:05 +02:00
Mark Andrews
265554f895
use isc_refcount_decrement to decrement NEWCONNSOCK(dev)->references; use isc_refcount_increment instead of isc_refcount_init in socket_create
2019-04-23 00:12:17 -04:00
Ondřej Surý
2e40cc94dc
On non-GNUC systems, use uintmax_t in the ISC_ALIGN macro
2019-04-18 12:55:25 +02:00
Mark Andrews
a520662ed4
allow dlz to signal that the view's transfer acl should be used
2019-03-11 14:27:13 +11:00
Ondřej Surý
7eea756858
Restore missing check for flockfile and getc_unlocked
2019-03-08 21:20:20 +01:00
Ondřej Surý
a04a390195
Convert *.vcxproj.user to CRLF line endings
2019-03-08 18:01:48 +01:00
Ondřej Surý
c2637c8429
Use ForcedIncludeFiles directive to include config.h everywhere automatically
2019-03-08 17:14:38 +01:00
Ondřej Surý
1b25d8a0ca
Remove explicit '#include <config.h>' from the header files (the include should not have been there in the first place)
2019-03-08 15:15:05 +01:00
Ondřej Surý
78d0cb0a7d
Use coccinelle to remove explicit '#include <config.h>' from the source files
2019-03-08 15:15:05 +01:00
Mark Andrews
435ae2f29a
Handle EDQUOT and ENOSPC errors
2019-03-07 21:02:48 -08:00
Witold Kręcicki
b57a38ae43
Fix a race in socket code when internal_{accept, send, receive} is called
...
from event loop on an socket and, in the meantime, someone has closed this
socket.
2019-03-06 12:56:11 -08:00
Mark Andrews
cb913177ae
improve clang / cmocka integration
2019-03-05 10:20:29 -08:00
Evan Hunt
efb0d1e83d
documentation changes setting up 9.15 development branch
2019-02-21 16:42:17 -08:00
Mark Andrews
f87b88e520
remove dead assignments
2019-02-19 08:12:09 +11:00
Mark Andrews
76a1c1531a
assert result is ISC_R_SUCCESS
2019-02-19 07:57:14 +11:00
Tinderbox User
b4d3f78293
prep 9.13.6
2019-02-06 22:13:05 +00:00
Evan Hunt
2f13524164
initalize a named_g_defaultbindkeys variable
2019-02-06 13:18:00 +11:00
Ondřej Surý
3a3e75042d
Remove support for compiling without assertions (Both ISC_CHECK_ALL, ISC_CHECK_NONE are now gone)
2019-01-31 11:16:08 +01:00
Ondřej Surý
27eb6189a8
Fix Centos 6 build by explicitly casting to __typeof__(obj) in atomic_compare_exchange_strong shim function
2019-01-30 15:54:17 +01:00
Witold Kręcicki
9ded5d5193
Cast atomic_load_explicit to proper size
2019-01-30 14:12:06 +01:00
Ondřej Surý
f2d1a88efc
Add #pragma intrinsic for intrinsic Windows functions
2019-01-30 13:48:58 +01:00
Ondřej Surý
9539e1c3a1
Fix memory_order_cst_seq -> memory_order_seq_cst typo
2019-01-30 13:48:58 +01:00
Ondřej Surý
d3e0604354
Properly use atomic_compare_exchange instead of load/store
2019-01-30 13:48:58 +01:00
Ondřej Surý
4f5e83b139
Add define for InterlockedExchangeAdd8 intrinsic
2019-01-30 13:48:58 +01:00
Ondřej Surý
7a7a8b0f7b
Add atomic_bool implementation to unix and win32 stdatomic.h shim headers
2019-01-30 09:37:38 +01:00
Ondřej Surý
a84e70acd0
Fix copy&paste error in the atomic_fetch_add_explicit{32,64} macros.
...
- InterlockedExchange was incorrectly used in place where InterlockedExchangeAdd
should have been used
2019-01-30 09:37:38 +01:00
Evan Hunt
19dd6a409c
Fix a typo in the win32 version of the atomic_store macro
2019-01-30 09:37:38 +01:00
Evan Hunt
39527e9c36
Moved the unix version to lib/isc/unix/include/isc so it's more obvious in the future that it isn't the only copy
2019-01-30 09:37:38 +01:00
Witold Kręcicki
a003908af4
Fix a race in access to manager->tasks in taskmgr
...
Make taskmgr->mode and boolean state flags (exclusive, paused, exiting) atomic.
2019-01-29 03:32:29 -05:00
Evan Hunt
995134ce76
rename struct members to avoid a name collision on BSD
2019-01-28 10:59:48 -08:00
Witold Kręcicki
42d9a536a7
Make isc_counter use atomics instead of locks
2019-01-25 04:26:49 -05:00
Witold Kręcicki
0af500a2c5
- Make isc_quota use atomics instead of locks
...
- Use getters for isc_quota parameters, make fields private
- Fix a potential data race with recursion clients limits logging
2019-01-25 04:26:49 -05:00
Witold Kręcicki
814bfa23b2
Add atomic_store_relaxed and atomic_load_relaxed macros to isc/atomic.h, fix issues in isc/stdatomic.h
2019-01-25 04:26:49 -05:00
Mark Andrews
2be55f5c05
use smt_pause instead of pause on sparc
2019-01-15 20:29:27 -05:00
Mark Andrews
bd529b1f30
silence coverity issues; move isc_refcount_decrement out of INSIST
2019-01-10 14:42:28 +11:00
Ondřej Surý
e2cdf066ea
Remove message catalogs
2019-01-09 23:44:26 +01:00
Mark Andrews
5e8b772ad1
Ensure base64/base32/hex fields in DNS records that should be non-empty are.
2019-01-09 18:04:21 +11:00
Ondřej Surý
ff7c868f25
__SANITIZE_ADDRESS__ needs to be defined to 1
2018-12-19 22:02:37 +01:00
Ondřej Surý
272c065268
Add emacs .dir-locals.el settings for flycheck mode
2018-12-19 17:03:37 +01:00
Ondřej Surý
8903d68d69
gcc defines __SANITIZE_ADDRESS__ and not __ADDRESS_SANITIZER__, use the correct #define
2018-12-19 12:24:59 +01:00
Ondřej Surý
e1ce3a3d42
Define __ADDRESS_SANITIZER__ if compiling under clang's AddressSanitizer
2018-12-19 09:54:37 +01:00
Tinderbox User
5bd855251c
prep 9.13.5
2018-12-07 03:41:19 +00:00
Ondřej Surý
953a957dfa
Just #define isc_refcount_increment0() to isc_refcount_increment()
2018-12-05 14:16:41 +01:00
Ondřej Surý
8537adef4c
The isc_refcount_decrement must use memory_order_release and isc_refcount_destroy must run thread barrier with memory_order_require
2018-12-05 14:11:53 +01:00
Witold Kręcicki
ddc1d4d6d4
Fix a race between process_fd and socketclose in unix socket code. [GL #744 ]
2018-12-05 12:03:52 +00:00
Ondřej Surý
d13cabd27e
fixup! When compiling for fuzzing, ensure the pseudo random number seed is non-zero.
2018-11-30 11:21:55 +00:00
Stephen Morris
77032a4e29
When compiling for fuzzing, ensure the pseudo random number seed is non-zero.
2018-11-30 11:21:55 +00:00
Mark Andrews
a487473fc5
add missing DBC checks for catz and add isc_magic checks; add DBC checks to ht.c
2018-11-29 12:39:20 +11:00
Ondřej Surý
a688a43faf
Move the CMocka include directories from CFLAGS to CINCLUDES where it belongs to not get overriden later by the default CFLAGS rule
2018-11-26 16:16:34 +01:00
Michał Kępień
62ca7743ae
Fix compilation on CentOS 6 (i386)
...
The stock toolchain available on CentOS 6 for i386 is unable to use the
_mm_pause() intrinsic. Fix by using "rep; nop" assembly instructions on
that platform instead.
2018-11-26 10:57:14 +01:00
Ondřej Surý
e24afa3088
Fix typo __LINE -> __LINE__
2018-11-24 00:53:24 +01:00
Witold Kręcicki
d5793ecca2
- isc_task_create_bound - create a task bound to specific task queue
...
If we know that we'll have a task pool doing specific thing it's better
to use this knowledge and bind tasks to task queues, this behaves better
than randomly choosing the task queue.
- use bound resolver tasks - we have a pool of tasks doing resolutions,
we can spread the load evenly using isc_task_create_bound
- quantum set universally to 25
2018-11-23 04:34:02 -05:00
Mark Andrews
509dad8737
handle systems without IPv4
2018-11-23 12:05:53 +11:00
Mark Andrews
6696a40ea9
address resource leak; don't call close() on socket error;
2018-11-23 10:34:59 +11:00
Ondřej Surý
d1a8a3faed
Memory allocations must be fatal even when default_memalloc is not used
2018-11-22 16:46:57 +01:00
Ondřej Surý
2fa857d502
Cleanup lib/isc/mem.c after failed allocations made fatal
2018-11-22 16:46:56 +01:00
Ondřej Surý
3987a146be
Remove isc_mem_{set,get}quota unused functions
2018-11-22 16:46:56 +01:00
Håvard Eidnes
f6c4ed94e4
Fix the build on NetBSD due to the differences in pthread implementation.
...
Signed-off-by: Ondřej Surý <ondrej@sury.org>
2018-11-22 09:43:43 -05:00
Witold Kręcicki
929ea7c2c4
- Make isc_mutex_destroy return void
...
- Make isc_mutexblock_init/destroy return void
- Minor cleanups
2018-11-22 11:52:08 +00:00
Ondřej Surý
d940e95206
isc_quota_init now returns 'void'
2018-11-22 11:52:08 +00:00
Ondřej Surý
2f3eee5a4f
isc_mutex_init returns 'void'
2018-11-22 11:51:49 +00:00
Ondřej Surý
73a8999d1c
isc_condition_init returns 'void'
2018-11-22 11:51:49 +00:00
Witold Kręcicki
0bed9bfc28
isc_mutex_init and isc_condition_init failures are now fatal
2018-11-22 11:51:49 +00:00
Tinderbox User
db1cd0d970
prep 9.13.4
2018-11-22 00:20:22 +00:00
Witold Kręcicki
5f81aa10bc
Use proper casting in socket unit test
2018-11-19 17:40:34 +01:00
Ondřej Surý
7a3eb391fa
Fix memory leak in lex_test.c
2018-11-19 07:47:05 +01:00
Evan Hunt
8f15219f36
remove (or hide behind a 'verbose' flag) extra output from system tests
2018-11-16 20:46:14 +00:00
Mark Andrews
1ca5920113
2018-11-16 12:24:18 +11:00
Mark Andrews
474fbe88bf
add missing tasks argument
2018-11-16 11:51:05 +11:00
Evan Hunt
c2a274cc5d
silence "unused return value" warning
2018-11-15 12:54:11 -08:00
Ondřej Surý
8de2451756
Abort on memory allocation failure
2018-11-15 17:24:08 +01:00
Witold Kręcicki
79afbe2966
Some comments
2018-11-15 08:21:40 +00:00
Witold Kręcicki
16d329d55b
Work with assumption that isc_mem_get always succeds; Crash if isc_thread_create, isc_mutex_init or isc_condition_init fails
2018-11-15 08:21:40 +00:00
Evan Hunt
1f0cd6606e
style: one-line statement braces, line length, etc
2018-11-15 08:21:40 +00:00
Witold Krecicki
e55bbec66e
FreeBSD fixes - proper affinity setting, don't use SO_REUSEPORT
2018-11-15 08:21:17 +00:00
Witold Krecicki
3f7d79e574
Don't doublelock fdlock on Solaris
2018-11-15 08:21:17 +00:00
Witold Kręcicki
ca7b5ceee5
Synchronize Windows socket code with API changes.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
c1a4f0e66a
Use multiple worker queues (using isc_task_sendto()) in unix socket code
2018-11-15 08:21:17 +00:00
Witold Kręcicki
b2b210d6d9
Make watching/unwatching sockets saner.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
d652551e86
Use the newly accepted FD in TCP code.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
88edf8fe4d
Use isc_refcount_t in socket reference counting.
2018-11-15 08:21:17 +00:00
Witold Krecicki
7223790380
Multiple network event loop threads support for Solarises /dev/poll.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
9c926a5d9b
Mangle fdlocks a bit.
...
Mutexes are slower if they're in the same cache line. Since
fd's come in herds, and usually our listen sockets will have nearby
fd numbers, we mangle fdlocks so that the locks are further away.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
58d75d9d8d
Fix a race between socket closing and incoming event.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
f94f4bc1f4
Set network threads CPU affintity.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
bd024eee57
Add runtime detection of SO_REUSEPORT, use it instead of dup() if available.
2018-11-15 08:21:17 +00:00
Witold Krecicki
6feb688f69
Use multiple network event loop threads with separate data structures.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
cbc1b12311
Do IO after event directly in the network thread, don't queue an event in a separate task.
2018-11-15 08:21:17 +00:00
Witold Kręcicki
778ab8158a
Remove fdwatch sockets, those are not used anywhere.
2018-11-15 08:21:17 +00:00
Evan Hunt
8c4d50c6bc
remove ATF source code and Atffiles
2018-11-14 20:17:04 -08:00
Joey
9eea00cd3c
convert socket_test; remove ATF from lib/isc/tests
2018-11-14 20:17:04 -08:00
Evan Hunt
bd009b34a6
convert regex_test
2018-11-14 20:17:04 -08:00
Evan Hunt
6ad7acd787
convert random_test
2018-11-14 20:17:04 -08:00
Joey
683094e308
convert mem_test
2018-11-14 20:17:04 -08:00
Evan Hunt
20cef35ece
convert timer_test
2018-11-14 20:17:04 -08:00
Evan Hunt
3e52987229
convert task_test
2018-11-14 20:17:04 -08:00
Joey
72f60bdd84
convert hash_test
2018-11-14 20:17:04 -08:00
Evan Hunt
c701f036ea
convert ht_test
2018-11-14 20:17:04 -08:00
Evan Hunt
3bf9a1e567
convert time_test
2018-11-14 20:17:04 -08:00
Evan Hunt
c9ff174dce
convert taskpool_test
2018-11-14 20:17:04 -08:00
Evan Hunt
4f84acb788
convert pool_test
2018-11-14 20:17:04 -08:00
Evan Hunt
231436039d
convert sockaddr_test
2018-11-14 20:17:04 -08:00
Evan Hunt
7ab8c5b583
convert netaddr_test
2018-11-14 20:17:04 -08:00
Evan Hunt
5f377136be
convert symtab_test
2018-11-14 20:17:04 -08:00
Evan Hunt
b3db0266cb
convert queue_test
2018-11-14 20:17:04 -08:00
Evan Hunt
8161be27db
convert file_test
2018-11-14 20:17:04 -08:00
Evan Hunt
4133fd86f1
convert lex_test
2018-11-14 20:17:04 -08:00
Evan Hunt
049a3a7c0e
convert errno_test
2018-11-14 20:17:04 -08:00
Evan Hunt
c1c8d8846f
convert safe_test
2018-11-14 20:17:04 -08:00
Evan Hunt
718ca3166c
convert radix_test
2018-11-14 20:17:04 -08:00
Evan Hunt
cc6ab2416b
convert heap_test
2018-11-14 20:17:04 -08:00
Evan Hunt
a7c308df9c
convert parse_test
2018-11-14 20:17:04 -08:00
Evan Hunt
52b86f0abe
convert counter_test
2018-11-14 20:17:04 -08:00
Evan Hunt
02a5db7631
convert buffer_test
2018-11-14 20:17:04 -08:00
Evan Hunt
dc88db015b
convert aes_test
2018-11-14 20:17:04 -08:00
Evan Hunt
d8766293ab
assert if {isc,dns,ns}_test_begin() is called when a prior test is running
2018-11-14 20:17:04 -08:00
Evan Hunt
b434b0a4b6
remove .NOTPARALLEL so unit tests can build faster
2018-11-14 20:17:04 -08:00
Evan Hunt
f456e64736
set HAVE_CMOCKA correctly when using --with-cmocka=yes
...
(note: this is still broken if using --with-cmocka=path)
2018-11-14 20:17:04 -08:00
Ondřej Surý
de6f43d071
Use static assertion to check for correct alignment size
2018-11-14 18:18:27 -05:00
Ondřej Surý
5e44a1008f
Define STATIC_ASSERT(cond, msg) to be _Static_assert(cond, msg) everywhere but on Windows where it stays to be INSIST(cond)
2018-11-14 18:18:27 -05:00
Mark Andrews
9024cf0c15
remove lib/isc/tests/result_test as it is now cmocka
2018-11-13 07:26:29 +11:00
Evan Hunt
471110933a
convert result tests to use CMocka instead of ATF
2018-11-10 12:29:40 -08:00
Mark Andrews
4f04a79250
check result tables are complete
2018-11-10 10:30:43 +11:00
Ondřej Surý
6f5fe11f5a
isc_stdtime_t is always 32-bit now, so remove the always true macro STDTIME_ON_32BITS
2018-11-09 02:27:06 +07:00
Ondřej Surý
68ca987792
Remove dummy ISLOCKED macro
2018-11-08 12:22:26 +07:00
Ondřej Surý
23fff6c569
Hint the compiler with ISC_UNREACHABLE(); that code after INSIST(0); cannot be reached
2018-11-08 12:22:17 +07:00
Ondřej Surý
e2e138a801
Don't assert on failed getrlimit call to allow called to handle this gracefully as it already does, just abort where we need to know the numbers
2018-11-08 12:21:53 +07:00
Ondřej Surý
a831e0f72d
When ISC assertions are disabled, still execute the condition to prevent unused variable warnings/errors from the compiler
2018-11-08 12:21:53 +07:00
Ondřej Surý
b2b43fd235
Turn (int & flag) into (int & flag) != 0 when implicitly typed to bool
2018-11-08 12:21:53 +07:00
Ondřej Surý
fbd2e47f51
Add small tweaks to the code to fix compilation when ISC assertions are disabled
...
While implementing the new unit testing framework cmocka, it was found that the
BIND 9 code doesn't compile when assertions are disabled or replaced with any
function (such as mock_assert() from cmocka unit testing framework) that's not
directly recognized as assertion by the compiler.
This made the compiler to complain about blocks of code that was recognized as
unreachable before, but now it isn't.
The changes in this commit include:
* assigns default values to couple of local variables,
* moves some return statements around INSIST assertions,
* adds __builtin_unreachable(); annotations after some INSIST assertions,
* fixes one broken assertion (= instead of ==)
2018-11-08 12:21:53 +07:00
Witold Kręcicki
ce478b4fc9
Fix a typo in lib/isc/unix/thread.c
2018-11-07 19:31:06 +00:00
Witold Kręcicki
460c8038c1
Use a single wake_all_queues() function to wake all queues
2018-11-06 08:19:50 +00:00
Witold Kręcicki
b3827319e0
Switch from privileged to un-privileged mode under lock
2018-11-06 08:19:50 +00:00
Witold Kręcicki
f166cabcae
Document isc_task_sendto properly, make sure that cpu we're sending to is always sane
2018-11-06 08:19:50 +00:00
Witold Kręcicki
025c74adee
Use proper memory ordering for tasks_running/tasks_ready
2018-11-06 08:19:50 +00:00
Witold Kręcicki
8fb5bc783f
Comment about taskmgr exclusive mode, fix a REQUIRE.
2018-11-06 08:19:50 +00:00
Witold Kręcicki
913856911a
Saner exclusive task handling in taskmgr
2018-11-06 08:19:50 +00:00
Witold Kręcicki
17d46fd48b
Formatting
2018-11-06 08:19:50 +00:00
Witold Kręcicki
c80e25e482
Get rid of isc_taskmgr_setmode, we only use it to set privileged mode
2018-11-06 08:19:50 +00:00