Commit Graph
32271 Commits
Author SHA1 Message Date
Mark Andrews 33d7b5b56f Silence Coverity REVERSE_INULL report
message does not need to be tested to NULL

(cherry picked from commit f0a66cb5aa)
2020-10-06 23:37:13 +11:00
Ondřej Surý b618d41fae Merge branch '2183-dns-flag-day-2020-v9_16' into 'v9_16'
Resolve "DNS Flag Day 2020"

See merge request isc-projects/bind9!4229
2020-10-06 12:22:05 +00:00
Ondřej Surý 45b081f406 Add text describing the changes done in the MR in more detail
(cherry picked from commit 096d41b4e2)
2020-10-06 09:35:21 +02:00
Ondřej SurýandOndřej Surý 4d2390c0b9 Adjust legacy tests for default 1232 EDNS Buffer Size
* legacy test was just expecting default server EDNS buffer size to be 4096,
  the test needed the adjustment to reset the buffer sizes back to 4096.

(cherry picked from commit 354a2e102d5b8b0a73c9bcea14a4af7091ed6e31)
2020-10-06 09:35:21 +02:00
Ondřej SurýandOndřej Surý b2ebbaf4a0 Adjust digdelv tests for default 1232 EDNS Buffer Size
* digdelv test was just expecting default server EDNS buffer size to be
  4096, the test needed only slight adjustment

(cherry picked from commit f1556f8c41)
2020-10-06 09:35:20 +02:00
Ondřej SurýandOndřej Surý 58a518adca Change the default ENDS buffer size to 1232 for DNS Flag Day 2020
The DNS Flag Day 2020 aims to remove the IP fragmentation problem from
the UDP DNS communication.  In this commit, we implement the minimal
required changes by changing the defaults for `edns-udp-size`,
`max-udp-size` and `nocookie-udp-size` to `1232` (the value picked by
DNS Flag Day 2020).

(cherry picked from commit bb990030d3)
2020-10-06 09:35:20 +02:00
Mark Andrews 4a707c4f87 Merge branch 'marka-run-sh-fixups-v9_16' into 'v9_16'
run.sh fixups for v9 16

See merge request isc-projects/bind9!4233
2020-10-06 06:22:00 +00:00
Mark Andrews 2614cc7610 run.sh failed to exit with a error code when it should
* if a core was detected 'status' was not updated.
* if a tsan or asan error was detected 'status' was not updated.
2020-10-06 06:03:59 +00:00
Mark Andrews 387e2e0c06 run.sh failed to report when system test failed. 2020-10-06 06:03:59 +00:00
Mark Andrews 0ded546c6e Merge branch 'marka-rndc-rst-fix-dnssec' into 'v9_16'
rndc.rst fix dnssec markup

See merge request isc-projects/bind9!4232
2020-10-06 06:01:05 +00:00
Mark Andrews a1714cf4da incorrect markup in rndc.rst lead to bad layout 2020-10-06 11:09:05 +11:00
Ondřej Surý ccb04c6f72 Merge branch 'ondrej/refactor-setsockopt-v9_16' into 'v9_16'
Refactor the setsockopt() code in network manager into helper functions (v9.16)

See merge request isc-projects/bind9!4228
2020-10-05 14:37:48 +00:00
Ondřej Surý ccd2902a02 Split reusing the addr/port and load-balancing socket options
The SO_REUSEADDR, SO_REUSEPORT and SO_REUSEPORT_LB has different meaning
on different platform. In this commit, we split the function to set the
reuse of address/port and setting the load-balancing into separate
functions.

The libuv library already have multiplatform support for setting
SO_REUSEADDR and SO_REUSEPORT that allows binding to the same address
and port, but unfortunately, when used after the load-balancing socket
options have been already set, it overrides the previous setting, so we
need our own helper function to enable the SO_REUSEADDR/SO_REUSEPORT
first and then enable the load-balancing socket option.

(cherry picked from commit fd975a551d)
2020-10-05 16:19:23 +02:00
Ondřej SurýandOndřej Surý 5cff119533 Use uv_os_sock_t instead of uv_os_fd_t for sockets
On POSIX based systems both uv_os_sock_t and uv_os_fd_t are both typedef
to int.  That's not true on Windows, where uv_os_sock_t is SOCKET and
uv_os_fd_t is HANDLE and they differ in level of indirection.

(cherry picked from commit acb6ad9e3c)
2020-10-05 16:19:23 +02:00
Ondřej SurýandOndřej Surý 601fc37efe Refactor isc__nm_socket_freebind() to take fd and sa_family as args
The isc__nm_socket_freebind() has been refactored to match other
isc__nm_socket_...() helper functions and take uv_os_fd_t and
sa_family_t as function arguments.

(cherry picked from commit 9dc01a636b)
2020-10-05 16:19:23 +02:00
Ondřej SurýandOndřej Surý c3d721b13b Add helper function to enable DF (don't fragment) flag on UDP sockets
This commits add isc__nm_socket_dontfrag() helper functions.

(cherry picked from commit d685bbc822)
2020-10-05 16:19:23 +02:00
Ondřej SurýandOndřej Surý 72b85a4100 Add SO_REUSEPORT and SO_INCOMING_CPU helper functions
The setting of SO_REUSE**** and SO_INCOMING_CPU have been moved into a
separate helper functions.

(cherry picked from commit 5daaca7146)
2020-10-05 16:19:23 +02:00
Matthijs Mekking 525750de71 Merge branch '1749-rndc-dnssec-rollover-v9_16' into 'v9_16'
Resolve "rndc trigger rollover"

See merge request isc-projects/bind9!4226
2020-10-05 09:49:00 +00:00
Matthijs Mekking a87fb09eb4 Use default algorithm in kasp test if possible
These tests don't require a specific algorithm so they should use
the DEFAULT_ALGORITHM from 'conf.sh.common'.

(cherry picked from commit 78c09f5622)
2020-10-05 11:20:35 +02:00
Matthijs Mekking 63652ca58f Use explicit result codes for 'rndc dnssec' cmd
It is better to add new result codes than to overload existing codes.

(cherry picked from commit 70d1ec432f)
2020-10-05 11:20:35 +02:00
Matthijs Mekking 6bbb2a8581 Various rndc dnssec -checkds fixes
While working on 'rndc dnssec -rollover' I noticed the following
(small) issues:

- The key files where updated with hints set to "-when" and that
  should always be "now.
- The kasp system test did not properly update the test number when
  calling 'rndc dnssec -checkds' (and ensuring that works).
- There was a missing ']' in the rndc.c help output.

(cherry picked from commit edc53fc416)
2020-10-05 11:20:35 +02:00
Matthijs Mekking 5bbecc5116 Test rndc rollover inactive key
When users (accidentally) try to roll an inactive key, throw an error.

(cherry picked from commit fcd34abb9e)
2020-10-05 11:20:35 +02:00
Matthijs Mekking 4d0dc466b5 Add rndc dnssec -rollover command
This command is similar in arguments as -checkds so refactor the
'named_server_dnssec' function accordingly.  The only difference
are that:

- It does not take a "publish" or "withdrawn" argument.
- It requires the key id to be set (add a check to make sure).

Add tests that will trigger rollover immediately and one that
schedules a test in the future.

(cherry picked from commit e826facadb)
2020-10-05 11:20:35 +02:00
Matthijs Mekking ad48f07c9a Add manual key rollover logic
Add to the keymgr a function that will schedule a rollover. This
basically means setting the time when the key needs to retire,
and updating the key lifetime, then update the state file. The next
time that named runs the keymgr the new lifetime will be taken into
account.

(cherry picked from commit df8276aef0)
2020-10-05 11:20:35 +02:00
Matthijs Mekking 9ea2a33f7e Merge branch '1870-fix-after-backport-to-9_11_s-v9_16' into 'v9_16'
Change condition for rndc dumpdb -expired

See merge request isc-projects/bind9!4225
2020-10-05 09:19:24 +00:00
Matthijs Mekking 79f9a5ddd5 Change condition for rndc dumpdb -expired
After backporting #1870 to 9.11-S I saw that the condition check there
is different than in the main branch. In 9.11-S "stale" can mean
stale and serve-stale, or not active (awaiting cleanup). In 9.16 and
later versions, "stale" is stale and serve-stale, and "ancient" means
not active (awaiting cleanup). An "ancient" RRset is one that is not
active (TTL expired) and is not eligble for serve-stale.

Update the condition for rndc dumpdb -expired to closer match what is
in 9.11-S.

(cherry picked from commit 5614454c3b)
2020-10-05 10:46:14 +02:00
Matthijs Mekking fb68194882 Merge branch '2171-dnssec-policy-weird-algo-15-bug-v9_16' into 'v9_16'
Resolve "dnssec-policy behaviour for algorithm 15 keys different to algorithm 8 keys"

See merge request isc-projects/bind9!4222
2020-10-02 09:19:39 +00:00
Matthijs Mekking 1b69a49c6e Fix a timing issue in kasp system test
Sometimes, not all keys have been created in time before 'check_keys'
is called. Run a 'retry_quiet' on checking the number of keys before
continuing checking the key data.

(cherry picked from commit af3b014976)
2020-10-02 10:19:07 +02:00
Matthijs Mekking 456925d6ec Fix kasp min key size bug
The minimal size for RSASHA1, RSASHA256 is 512, but due to bad
assignment it was set to 1024.

(cherry picked from commit 7c555254fe)
2020-10-02 10:18:59 +02:00
Matthijs Mekking 0e07dbe263 Test migration to dnssec-policy with views
This test case is unrelated to the fix for #2171 but was added to
reproduce the problem.

(cherry picked from commit 621093fe69)
2020-10-02 10:18:52 +02:00
Matthijs Mekking d31297c9f8 Minor fix in kasp system test
The 'wait_for_nsec' does not need to add TSIG because it calls
'dig_with_opts' and that already checks for TSIG.

(cherry picked from commit 43c6806779)
2020-10-02 10:18:44 +02:00
Matthijs Mekking 795139a60c Add change and note for #2171
This is a bug that needs to be noted.

(cherry picked from commit d6d41e96a3)
2020-10-02 10:18:35 +02:00
Matthijs Mekking a63dad13da Fix Ed25519 and Ed448 in dnssec-policy keymgr
The kasp code had bad implicit size values for the cryptographic
algorithms Ed25519 and Ed448. When creating keys they would never
match the dnssec-policy, leading to new attempts to create keys.

These algorithms were previously not yet added to the system tests,
due to lack of availability on some systems.

(cherry picked from commit 0e207392ec)
2020-10-02 10:18:25 +02:00
Matthijs Mekking 91a686c031 Add kasp tests for Ed25519 and Ed448
Use the testcrypto script to see if these algorithms are supported by
openssl. If so, add the specific configuration to the named.conf file
and touch a file to indicate support. If the file exists, the
corresponding setup and tests are performed.

(cherry picked from commit 7be1835795)
2020-10-02 10:18:17 +02:00
Michał Kępień d93a6c2007 Merge branch '2139-rrset-order-fixes-and-cleanups-v9_16' into 'v9_16'
[v9_16] "rrset-order" fixes and cleanups

See merge request isc-projects/bind9!4218
2020-10-02 07:19:19 +00:00
Michał Kępień 4cd7008635 Add CHANGES entries
(cherry picked from commit 27c815a220)
2020-10-02 08:52:42 +02:00
Michał Kępień 9fe54084aa Rework "rrset-order" documentation
Certain parts of the existing documentation for the "rrset-order"
statement are incorrect, others are ambiguous.  Rework the relevant
section of the ARM to make it clear and up-to-date with the source code.

(cherry picked from commit 2ac04dc930)
2020-10-02 08:52:42 +02:00
Michał Kępień 502d79ae4f Add tests for "order none" RRset ordering rules
Make sure "order none" RRset ordering rules are tested in the
"rrsetorder" system test just like all other rule types are.  As the
check for the case of no "rrset-order" rule matching a given RRset also
tests "order none" (rather than "order random", as the test code may
suggest at first glance), replace the test code for that case so that it
matches other "order none" tests.

(cherry picked from commit abdd4c89fc)
2020-10-02 08:51:29 +02:00
Michał Kępień 9e62c206c6 Allow "order none" in "rrset-order" rules
named-checkconf treats the following configuration as valid:

    options {
        rrset-order {
            order none;
        };
    };

Yet, the above configuration causes named to crash on startup with:

    order.c:74: REQUIRE(mode == 0x00000800 || mode == 0x00000400 || mode == 0x00800000) failed, back trace

Add DNS_RDATASETATTR_NONE to the list of RRset ordering modes accepted
by dns_order_add() to allow "order none" to be used in "rrset-order"
rules.  This both prevents the aforementioned crashes and addresses the
discrepancy between named-checkconf and named.

(cherry picked from commit dbcf683c1a)
2020-10-02 08:50:51 +02:00
Ondřej Surý 0bdfa2aa9f Merge branch 'ondrej/fix-split-string-warnings-clang-12-v9_16' into 'v9_16'
Fix the clang 12 warnings with multi-line strings in string arrays

See merge request isc-projects/bind9!4212
2020-10-01 16:47:21 +00:00
Ondřej SurýandOndřej Surý 50db10b7ca Fix the clang 12 warnings with multi-line strings in string arrays
The clang 12 has a new warning that warns when using multi-line strings
in the string arrays, f.e.:

    { "aa",
      "b"
      "b",
      "cc" }

would generate warning like this:

    private_test.c:162:7: error: suspicious concatenation of string literals in an array initialization; did you mean to separate the elements with a comma? [-Werror,-Wstring-concatenation]
                                      "33333/RSASHA1" };
                                      ^
    private_test.c:161:7: note: place parentheses around the string literal to silence warning
                                      "Done removing signatures for key "
                                      ^
    private_test.c:197:7: error: suspicious concatenation of string literals in an array initialization; did you mean to separate the elements with a comma? [-Werror,-Wstring-concatenation]
                                      "NSEC chain",
                                      ^
    private_test.c:196:7: note: place parentheses around the string literal to silence warning
                                      "Removing NSEC3 chain 1 0 30 DEAF / creating "
                                      ^
    2 errors generated.

(cherry picked from commit 7b07f22969)
2020-10-01 18:42:11 +02:00
Ondřej Surý 23ad0bcfa1 Merge branch 'ondrej/cherry-picked-netmgr-v9_16' into 'v9_16'
Synchronize the netmgr changes with main branch

See merge request isc-projects/bind9!4211
2020-10-01 16:30:38 +00:00
Ondřej Surý 7a90ad1fe2 Add separate prefetch nmhandle to ns_client_t
As the query_prefetch() or query_rpzfetch() could be called during
"regular" fetch, we need to introduce separate storage for attaching
the nmhandle during prefetching the records.  The query_prefetch()
and query_rpzfetch() are guarded for re-entrance by .query.prefetch
member of ns_client_t, so we can reuse the same .prefetchhandle for
both.

(cherry picked from commit d4976e0ebe)
2020-10-01 18:09:35 +02:00
Evan HuntandOndřej Surý 4b6b3e4158 CHANGES
(cherry picked from commit e460e321bd)
2020-10-01 18:09:35 +02:00
Evan HuntandOndřej Surý b8db702a0c fix LD_WRAP test in configure
The LD_WRAP test in configure was broken, and failed to
indicate LD_WRAP support correctly, resulting in some unit
tests failing to run.

(cherry picked from commit cfa4ea64bc)
2020-10-01 18:09:35 +02:00
Ondřej Surý 1126fe3b5b Refactor the pausing/unpausing and finishing the nm_thread
The isc_nm_pause(), isc_nm_resume() and finishing the nm_thread() from
nm_destroy() has been refactored, so all use the netievents instead of
directly touching the worker structure members.  This allows us to
remove most of the locking as the .paused and .finished members are
always accessed from the matching nm_thread.

When shutting down the nm_thread(), instead of issuing uv_stop(), we
just shutdown the .async handler, so all uv_loop_t events are properly
finished first and uv_run() ends gracefully with no outstanding active
handles in the loop.

(cherry picked from commit e5ab137ba3)
2020-10-01 18:09:35 +02:00
Witold KręcickiandOndřej Surý 4a7dfd69ac tracing of active sockets and handles
If NETMGR_TRACE is defined, we now maintain a list of active sockets
in the netmgr object and a list of active handles in each socket
object; by walking the list and printing `backtrace` in a debugger
we can see where they were created, to assist in in debugging of
reference counting errors.

On shutdown, if netmgr finds there are still active sockets after
waiting, isc__nm_dump_active() will be called to log the list of
active sockets and their underlying handles, along with some details
about them.

(cherry picked from commit 00e04a86c8)
2020-10-01 18:09:35 +02:00
Evan HuntandOndřej Surý 686b73ae25 limit the time we wait for netmgr to be destroyed
if more than 10 seconds pass while we wait for netmgr events to
finish running on shutdown, something is almost certainly wrong
and we should assert and crash.

(cherry picked from commit 2f2d60a989)
2020-10-01 18:09:35 +02:00
Evan HuntandOndřej Surý a73e807a46 add more logging to the shutdown system test
the test server running in shutdown/resolver was not logging
any debug info, which made it difficult to diagnose test failures.

(cherry picked from commit cc7ceace7d)
2020-10-01 18:09:35 +02:00
Ondřej Surý 5a92958fba properly lock the setting/unsetting of callbacks in isc_nmsocket_t
changes to socket callback functions were not thread safe.

(cherry picked from commit 89c534d3b9)
2020-10-01 18:09:35 +02:00