]>
git.ipfire.org Git - thirdparty/pdns.git/log
Remi Gacogne [Wed, 25 Aug 2021 09:01:48 +0000 (11:01 +0200)]
rec: Fix formatting
Remi Gacogne [Wed, 25 Aug 2021 07:57:10 +0000 (09:57 +0200)]
rec: Fix the acquired/contended cache counters not being updated
Otto Moerbeek [Mon, 23 Aug 2021 09:21:57 +0000 (11:21 +0200)]
Merge pull request #10659 from omoerbeek/rec-fix-dot-to-port-853
rec: Fix wrong default value call for dot-to-port-853 setting
Otto [Mon, 23 Aug 2021 08:14:42 +0000 (10:14 +0200)]
Fix wrong default value call for dot-to-port-853 setting
Otto Moerbeek [Fri, 20 Aug 2021 13:01:07 +0000 (15:01 +0200)]
Merge pull request #10605 from omoerbeek/rec-policy-hit-stats
rec: Keep a count of per rpz (or filter) hits
Otto [Fri, 20 Aug 2021 11:49:37 +0000 (13:49 +0200)]
One way of solving the race. Still needs operator[] though, since policyName
can vary.
Otto [Thu, 19 Aug 2021 07:08:53 +0000 (09:08 +0200)]
Prometheus help texts and general cleanup. Example output:
pdns_recursor_policy_hits 10
pdns_recursor_policy_hits{type="filter"} 3
pdns_recursor_policy_hits{type="rpz",policyname="rpz.local"} 5
pdns_recursor_policy_hits{type="rpz",policyname="rpzFile"} 2
Remi Gacogne [Wed, 18 Aug 2021 13:17:14 +0000 (15:17 +0200)]
Merge pull request #10622 from rgacogne/rec-loop-ds-child-zone
rec: Detect a loop when the denial of the DS comes from the child zone
Otto [Tue, 20 Jul 2021 12:07:20 +0000 (14:07 +0200)]
Keep a count of per rpz (or filter) hits, by default only exported via
Prometheus. After #10554 is merged the Promethus help info should be added
to this branch.
Otto Moerbeek [Wed, 18 Aug 2021 12:55:07 +0000 (14:55 +0200)]
Merge pull request #10554 from omoerbeek/rec-per-cpu-thread-metrics
rec: Modify per-thread cpu usage stats to be Prometheus-friendly
Otto Moerbeek [Wed, 18 Aug 2021 09:57:05 +0000 (11:57 +0200)]
Merge pull request #10643 from omoerbeek/rec-ns-from-cache-fw-vs-dontquery
rec: NS from the cache could be a forwarder
Remi Gacogne [Wed, 18 Aug 2021 09:39:40 +0000 (11:39 +0200)]
Merge pull request #10631 from rgacogne/mplexer-read-write
Handle waiting for a descriptor to become readable OR writable
Remi Gacogne [Wed, 18 Aug 2021 09:31:36 +0000 (11:31 +0200)]
Merge pull request #10649 from rgacogne/lock-guarded-ddist
Convert dnsdist and the recursor to LockGuarded
Otto [Wed, 18 Aug 2021 08:54:53 +0000 (10:54 +0200)]
Make it explicit that IP addresses are taken into account when deciding to not block
an IP being forwarded to.
Remi Gacogne [Wed, 18 Aug 2021 08:44:44 +0000 (10:44 +0200)]
Merge pull request #10650 from rgacogne/ddist-rd-cache-miss
dnsdist: Fix the wrong RD and CD flags being cached, causing misses
Otto [Wed, 30 Jun 2021 08:27:04 +0000 (10:27 +0200)]
Modify per-thread cpu usage stats to be Prometheus-friendly.
Plus fix a few small issues wrt HELP texts.
Example output:
pdns_recursor_cpu_msec{thread=0} 10
pdns_recursor_cpu_msec{thread=1} 0
pdns_recursor_cpu_msec{thread=2} 0
Otto [Wed, 18 Aug 2021 07:24:45 +0000 (09:24 +0200)]
Also check if the remoteIP is one of the IPs we would have forwarded to,
even if it's coming from the cache.
Remi Gacogne [Wed, 30 Jun 2021 13:26:57 +0000 (15:26 +0200)]
rec: Appease the formatting gods (negcache.hh)
Otto [Fri, 25 Jun 2021 09:16:04 +0000 (11:16 +0200)]
Change the static lock() method of MemRecursorCache to be an instance
method of MapCombo. Likewise for negcache.
Remi Gacogne [Wed, 16 Jun 2021 15:41:26 +0000 (17:41 +0200)]
Document how our wrappers around mutexes work
Remi Gacogne [Wed, 16 Jun 2021 15:31:38 +0000 (17:31 +0200)]
rec: Do not require taking the lock to know the size of a cache
Remi Gacogne [Tue, 25 May 2021 07:52:32 +0000 (09:52 +0200)]
dnsdist: Remove unused mutex include
Remi Gacogne [Thu, 20 May 2021 07:12:25 +0000 (09:12 +0200)]
rec: Store the carbon configuration in a StateHolder
Remi Gacogne [Thu, 20 May 2021 06:38:59 +0000 (08:38 +0200)]
rec: Convert the dynmetrics to LockGuarded
Remi Gacogne [Thu, 20 May 2021 06:23:31 +0000 (08:23 +0200)]
rec: Move the record caches to LockGuarded (WIP: size() should not need a lock)
Remi Gacogne [Wed, 19 May 2021 10:57:09 +0000 (12:57 +0200)]
Rename the lock() method to write_lock() for shared mutexes
Remi Gacogne [Mon, 10 May 2021 16:19:14 +0000 (18:19 +0200)]
rec: Move the NOD code to LockGuarded
Remi Gacogne [Mon, 10 May 2021 15:57:53 +0000 (17:57 +0200)]
rec: Convert RPZ loader stats to LockGuarded
Remi Gacogne [Fri, 7 May 2021 16:29:04 +0000 (18:29 +0200)]
rec: Convert the aggressive NSEC cache to LockGuarded
Remi Gacogne [Fri, 7 May 2021 09:10:33 +0000 (11:10 +0200)]
dnsdist: Convert remaining Action mutexes to LockGuarded
Remi Gacogne [Fri, 7 May 2021 09:09:38 +0000 (11:09 +0200)]
LockGuarded: Add move constructors
Remi Gacogne [Fri, 30 Apr 2021 13:53:30 +0000 (15:53 +0200)]
dnsdist: Convert most of the remaining locks to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:53:00 +0000 (15:53 +0200)]
Convert the StateHolder to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:52:12 +0000 (15:52 +0200)]
dnsdist: Convert CDBKVStore to SharedLockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:51:35 +0000 (15:51 +0200)]
dnsdist: Convert the dynamic blocks topN to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:51:00 +0000 (15:51 +0200)]
dnsdist: Convert ConcurrentConnectionManager to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:50:09 +0000 (15:50 +0200)]
dnsdist: Convert GnuTLSTicketsKey to SharedLockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:49:34 +0000 (15:49 +0200)]
dnsdist: Convert the web server configuration to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:48:58 +0000 (15:48 +0200)]
dnsdist: Convert the TCP client counts map to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:48:26 +0000 (15:48 +0200)]
dnsdist: Convert DynBPF to LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:47:41 +0000 (15:47 +0200)]
dnsdist: Convert the Packet Cache to SharedLockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:46:02 +0000 (15:46 +0200)]
dnsdist: Convert DNSCrypt to SharedLockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:43:25 +0000 (15:43 +0200)]
speedtest: Add tests for LockGuarded
Remi Gacogne [Fri, 30 Apr 2021 13:42:10 +0000 (15:42 +0200)]
Add SharedLockGuarded, a read-write lock version of LockGuarded
Remi Gacogne [Fri, 16 Apr 2021 13:40:34 +0000 (15:40 +0200)]
dnsdist: Move the Lua mutex to LockGuarded
Remi Gacogne [Fri, 16 Apr 2021 13:39:53 +0000 (15:39 +0200)]
dnsdist: Move the ring buffers to LockGuarded
Remi Gacogne [Fri, 16 Apr 2021 13:39:18 +0000 (15:39 +0200)]
Move the remote logger class to LockGuarded
Remi Gacogne [Fri, 16 Apr 2021 13:38:55 +0000 (15:38 +0200)]
dnsdist: Move the eBPF filter class to LockGuarded
Remi Gacogne [Fri, 16 Apr 2021 13:34:50 +0000 (15:34 +0200)]
Introduce LockGuarded, a lock-protected data
The general idea has been borrowed from Rust's locks: instead of
defining two objects, the one to be protected, T, and the lock, we
define a single LockGuarded<T> object which contains the object.
That provides two big advantages:
- it is immediately clear which data is protected by the lock
- that data simply can't be accessed without holding the lock.
Otto Moerbeek [Tue, 17 Aug 2021 11:31:17 +0000 (13:31 +0200)]
Merge pull request #10598 from omoerbeek/rec-almost-expired-refactor-and-stats
Rec: almost expired refactor and stats
Otto [Tue, 17 Aug 2021 10:23:40 +0000 (12:23 +0200)]
From review feedback: only inc s_almost_expired_tasks_run after task has ended without exceptions
and check for nullptr function in task record.
Otto [Tue, 20 Jul 2021 08:47:51 +0000 (10:47 +0200)]
Expose almost-expired metrics
Otto [Tue, 20 Jul 2021 07:33:17 +0000 (09:33 +0200)]
Refactor stats queue, introducing a pointor to a function that does the work
(pointing to a resolve function) and almost-expired specific stats.
Otto Moerbeek [Tue, 17 Aug 2021 09:43:14 +0000 (11:43 +0200)]
Merge pull request #10546 from omoerbeek/rec-dns64-metrics
rec: Add dns64 metrics
Remi Gacogne [Tue, 17 Aug 2021 09:33:16 +0000 (11:33 +0200)]
rec: Add a test for 'denial of the DS comes from the child zone' loop
Otto Moerbeek [Tue, 17 Aug 2021 07:42:10 +0000 (09:42 +0200)]
Merge pull request #10602 from omoerbeek/rec-drop-after-preresolve
rec: Process policy and potential Drop action after Lua hooks
Remi Gacogne [Tue, 17 Aug 2021 07:37:34 +0000 (09:37 +0200)]
Merge pull request #10647 from rgacogne/decaf-polymorphic-exception
Fix a warning about catching a polymorphic exception type by value
Remi Gacogne [Tue, 17 Aug 2021 07:32:40 +0000 (09:32 +0200)]
dnsdist: Avoid arithmetic on bitfields, as suggested by Otto
Remi Gacogne [Mon, 16 Aug 2021 14:27:13 +0000 (16:27 +0200)]
Update multiplexer priorities so completion ports are preferred over /dev/poll
Remi Gacogne [Mon, 16 Aug 2021 10:51:15 +0000 (12:51 +0200)]
dnsdist: Fix the wrong RD and CD flags being cached, causing misses
We used to restore the RD and CD flags from the initial query before
inserting the response into the cache. That would cause an issue
if the flags had been altered, for example via SetNoRecurseAction,
as the cache lookup is done _after_ the actions have been applied
and thus after the flags altered.
If the initial query had the RD bit set, and thus was cleared by the
rule, the response would have been inserted with the RD bit restored,
and no lookup would then succeed because it would be done with the
bit cleared.
This commit fixes the insertion to use the RD and CD bits as set in
the response before restoring them, and restores the RD and CD bits
after a cache hit as well, to ensure that:
- cache lookups are done after the rules are applied
- cache insertions are done before the flags are restored
Remi Gacogne [Mon, 16 Aug 2021 08:01:04 +0000 (10:01 +0200)]
Fix a warning about catching a polymorphic exception type by value
```
decafsigners.cc: In member function ‘virtual bool DecafED25519DNSCryptoKeyEngine::verify(const string&, const string&) const’:
decafsigners.cc:140:11: warning: catching polymorphic type ‘class decaf::CryptoException’ by value [-Wcatch-value=]
140 | } catch(CryptoException) {
| ^~~~~~~~~~~~~~~
decafsigners.cc: In member function ‘virtual bool DecafED448DNSCryptoKeyEngine::verify(const string&, const string&) const’:
decafsigners.cc:276:11: warning: catching polymorphic type ‘class decaf::CryptoException’ by value [-Wcatch-value=]
276 | } catch(CryptoException) {
| ^~~~~~~~~~~~~~~
```
Remi Gacogne [Mon, 16 Aug 2021 07:03:36 +0000 (09:03 +0200)]
Merge pull request #10640 from Habbie/dnsdist-docs-grepq
dnsdist docs: clarify grepq num parameter
Otto [Wed, 11 Aug 2021 11:14:37 +0000 (13:14 +0200)]
If we get an NS from the cache, it still could be one forwarding applies to.
Take that into acount when determining dont-query status. Should fix #10638.
Peter van Dijk [Tue, 10 Aug 2021 13:18:45 +0000 (15:18 +0200)]
Merge pull request #10642 from Habbie/checkkey-null-error
checkKey: handle NULL error string from OpenSSL more gracefully
Peter van Dijk [Tue, 10 Aug 2021 11:56:25 +0000 (13:56 +0200)]
checkKey: handle NULL error string from OpenSSL more gracefully
fixes #10641
Otto Moerbeek [Tue, 10 Aug 2021 09:49:06 +0000 (11:49 +0200)]
Merge pull request #10639 from omoerbeek/rec-tfo-update
rec: Google is working to fix their TFO issues on their DNS servers
Peter van Dijk [Tue, 10 Aug 2021 07:52:47 +0000 (09:52 +0200)]
dnsdist docs: clarify grepq num parameter
Otto [Tue, 10 Aug 2021 07:22:52 +0000 (09:22 +0200)]
Google is working to fix their TFO issues on their DNS servers
Otto Moerbeek [Mon, 9 Aug 2021 06:19:43 +0000 (08:19 +0200)]
Merge pull request #10627 from omoerbeek/rec-policy-rm-race
rec: Check in more places if the policy has been updated before using or modifying it.
Otto [Fri, 6 Aug 2021 10:08:24 +0000 (12:08 +0200)]
Handle policy hit after nodata nxdomain Lua hooks and add
regression test for those two and the preresolve case.
Otto Moerbeek [Fri, 6 Aug 2021 09:42:57 +0000 (11:42 +0200)]
Merge pull request #10634 from omoerbeek/rec-macos-kqueue-and-fixes
Move MacOS to kqueue and assorted compile fixes
Otto [Fri, 6 Aug 2021 08:26:41 +0000 (10:26 +0200)]
Move MacOS to kqueue and assorted compile fixes
Remi Gacogne [Thu, 5 Aug 2021 09:22:50 +0000 (11:22 +0200)]
Handle descriptor de-duplication on addFD/removeFD in the poll mplexer
Remi Gacogne [Thu, 5 Aug 2021 09:22:19 +0000 (11:22 +0200)]
Add a sample (disabled) benchmark test for the multiplexer
Remi Gacogne [Thu, 5 Aug 2021 09:16:49 +0000 (11:16 +0200)]
Take a ref, not a copy, of the multiplexer callback parameter in the unit tests
It does not matter there but we don't want to copy that code and
keep the copy in a place where it does.
Remi Gacogne [Thu, 5 Aug 2021 07:20:40 +0000 (09:20 +0200)]
Work around a formatting oddity
Remi Gacogne [Thu, 5 Aug 2021 07:04:22 +0000 (09:04 +0200)]
Run the unit tests for all the available multiplexers
And not just the "best" one.
Remi Gacogne [Thu, 5 Aug 2021 06:50:55 +0000 (08:50 +0200)]
Consistently return the number of ready events, not descriptor
We might have two events for the same descriptor, readable AND
writable. It was already counted as two separate events by the
kqueue multiplexer but not by the other ones.
Remi Gacogne [Thu, 5 Aug 2021 06:47:54 +0000 (08:47 +0200)]
Merge pull request #10626 from aj-gh/doc-dnsdist-setecsoverride
dnsdist: Document that setECSOverride has its drawbacks
Otto [Wed, 4 Aug 2021 14:57:18 +0000 (16:57 +0200)]
Fix typos
Remi Gacogne [Wed, 4 Aug 2021 14:37:58 +0000 (16:37 +0200)]
Hopefully fix compilation on OpenIndiana
Remi Gacogne [Wed, 4 Aug 2021 14:07:04 +0000 (16:07 +0200)]
kqueue does not merge read and write events for the same descriptor
So we need to add, remove and process them as two separate events.
Otto [Wed, 4 Aug 2021 13:12:22 +0000 (15:12 +0200)]
Make the kqueue code compile. unit test fails atm.
Remi Gacogne [Wed, 4 Aug 2021 12:35:53 +0000 (14:35 +0200)]
Handle waiting for a descriptor to become readable OR writable
This commit refactors our multiplexers to be able to wait for a
descriptor to become readable OR writable at the same time.
I kept the two separate maps for an easier handling of the separate
TTD and to limit the amount of changes, but we might want to merge
them into a single map in the future.
The accounting is moved into the parent class instead of being dealt
with by the multiplexers themselves.
I noticed that the poll multiplexer allocates and fills a vector of
pollfd for every call to run(), which seems wasteful, but I did not
want to touch that in this commit.
I did not compile or test the kqueue, ports and /dev/poll multiplexers
yet, so don't merge this without testing them first.
Otto Moerbeek [Tue, 3 Aug 2021 11:48:49 +0000 (13:48 +0200)]
Merge pull request #10623 from omoerbeek/rec-tcp-states
Rec: make all PacketIDs shared_ptr
Otto [Tue, 3 Aug 2021 08:32:57 +0000 (10:32 +0200)]
Add test case and comments
Andreas Jakum [Tue, 3 Aug 2021 07:56:50 +0000 (09:56 +0200)]
dnsdist: Document that setECSOverride has drawbacks under certain conditions.
Remi Gacogne [Tue, 3 Aug 2021 07:42:42 +0000 (09:42 +0200)]
Merge pull request #10601 from steffann/master
Document setTag(Response)Action behaviour
Otto [Tue, 3 Aug 2021 07:08:09 +0000 (09:08 +0200)]
Check in more places if the config policy has been updated before
using or modifying it.
Otto [Mon, 2 Aug 2021 12:15:53 +0000 (14:15 +0200)]
Use explicit PacketIDCompare
Otto [Mon, 2 Aug 2021 07:50:10 +0000 (09:50 +0200)]
When using equal_range with a different compare function than the one used by the index, it
should be consistent with the way the index is ordered.
In particular PacketIDBirthdayCompare did not agree with operator< for PacketIDs
Otto [Tue, 27 Jul 2021 12:29:23 +0000 (14:29 +0200)]
Move to a shared PacketID
There is an issue with equal_range() in asendto() that I fixed with an extra
test for the moment.
Otto [Tue, 27 Jul 2021 07:57:16 +0000 (09:57 +0200)]
Add FD to TCPLOG lines
Remi Gacogne [Sun, 1 Aug 2021 21:58:42 +0000 (23:58 +0200)]
rec: Detect a loop when the denial of the DS comes from the child zone
Remi Gacogne [Sun, 1 Aug 2021 15:19:14 +0000 (17:19 +0200)]
Merge pull request #10525 from rgacogne/ddist-lmdb-range
dnsdist: Add support for range-based lookups into a Key-Value store
Otto Moerbeek [Fri, 30 Jul 2021 09:46:59 +0000 (11:46 +0200)]
Merge pull request #10616 from omoerbeek/rec-prep-4.4.5-and-4.5.5
rec: Prep for rec-4.4.5 and rec-4.5.5
Peter van Dijk [Thu, 29 Jul 2021 22:08:07 +0000 (00:08 +0200)]
Merge pull request #10572 from pieterlexis/dockerignore
docker: ignore compiled files
Peter van Dijk [Thu, 29 Jul 2021 22:07:36 +0000 (00:07 +0200)]
Merge pull request #10607 from peterthomassen/patch-3
Document RFC 6742 types
Peter van Dijk [Thu, 29 Jul 2021 22:07:21 +0000 (00:07 +0200)]
Merge pull request #10610 from Habbie/auth-4.5-eol-update
auth: EOL update after 4.5 release
Peter van Dijk [Thu, 29 Jul 2021 21:56:32 +0000 (23:56 +0200)]
Merge pull request #10613 from Habbie/responsestats-type65535
auth: correct upper bounds on d_qtypecounters