Commit Graph
32830 Commits
Author SHA1 Message Date
Lennart Poettering aee9d18c8d nss-resolve: allow turning off validation via env var 2021-02-14 22:01:09 +01:00
Zbigniew Jędrzejewski-Szmek 86beb21302 systemctl,loginctl,machinectl: use a shared helper for arg_signal
I seems frivolous to yet another two -util.[ch] files, but the helper
should be in shared/ and it doesn't seem to fit anywhere else.
2021-02-14 15:59:09 +01:00
Lennart Poettering 3f0a7b3a32 resolved: randomize RR order in answers each time we get something from the cache
This allows some minimal, crappy load balancing.

Fixes: #16297
2021-02-14 15:43:04 +01:00
Lennart Poettering 48662847ec answer: minor refactor – move link local check into RR code 2021-02-14 15:43:01 +01:00
Lennart Poettering 5b2d8ffb5a answer: add helper for randomizing RR of answers 2021-02-14 15:42:56 +01:00
Lennart Poettering 5464c96186 random-util: add random_u64_range() that acquires a random number from a certain range, unbiased
So far we have been quite sloppy with this and ignored modulus and range
bias. Let's do something about, and add the option to do better.
2021-02-14 15:42:12 +01:00
Zbigniew Jędrzejewski-Szmek 3aa5765843 basic/unit-file: when loading linked unit files, use link source as "fragment path"
The general idea is that when a unit file is "linked" (i.e. installed by
symlinking from outside of the search paths), the *destination* name is
irrelevant. It doesn't even have to be a valid unit name, or to match the type
or instance value. The obvious collorary is that we shouldn't look at the
symlink destination name to derive the unit name, instance value, or anything
else at all.

When building the name map, when we find a linked unit (possibly at the end
of a series of alias redirects), store the *source* of the final symlink as the
fragment path. This has two effects:
- we stop looking at the *target* file name to derive unit info, i.e. actually
  implement the stuff described in the first paragraph.
- we load the unit fragment through the symlink. If someone were to remove the
  symlink, we'll not load the unit. This seems like the right thing.

Fixes #18058.
Before this change, we were generally quite confused about unit alises for
linked units. Fortunately most poeple use the same symlink source and target,
so in practice we wouldn't hit this too often.

In unit_load_fragment() a comment is added to explain what we're doing there.
2021-02-14 14:49:00 +01:00
Zbigniew Jędrzejewski-Szmek 76e5e267fc systemctl: inline iterator declarations 2021-02-14 11:55:56 +01:00
Zbigniew Jędrzejewski-Szmek e602abba15 basic/string-table: inline the iterator declaration 2021-02-14 11:24:45 +01:00
Zbigniew Jędrzejewski-Szmek b3c57df0f5 Merge pull request #18401 from anitazha/oomdxattr
oomd: implement avoid/omit support for cgroups
2021-02-13 10:00:31 +01:00
Lennart Poettering 3ec2f7f2e3 udev: make net_setup_link builtin quiet when link vanishes while we operate on it
Fixes: #16175
2021-02-13 17:46:56 +09:00
Lennart Poettering 6b10a2e030 core: slightly improve error message on load errors
Let's be a bit more helpful when refusing jobs on units that failed to
load properly. We already have explicit D-Bus errors for the error
conditions that are common and expected (such as "not found"), but for
the rest we so far generate a fairly cryptic message.

Let's try to be friendlier towards users and suggest what to do on such
errors.

Fixes: #16487
2021-02-13 17:46:39 +09:00
Yu Watanabe 9ae4f96056 Merge pull request #18555 from yuwata/network-address-set-flag-on-remove
network: address: also set IFA_FLAGS on remove
2021-02-13 17:44:58 +09:00
Yu Watanabe b2af6d66fb Merge pull request #18455 from yuwata/network-change-link-state-only-when-new-address-or-route-will-be-assigned
network: change link state only when new address or route will be assigned
2021-02-13 17:43:27 +09:00
Anita Zhang 4e806bfa9f oom: add unit file settings for oomd avoid/omit xattrs 2021-02-12 12:45:36 -08:00
Lennart Poettering 199d251b72 Merge pull request #18568 from keszybz/v248-prep
Start preparing for v238-rc1
2021-02-12 21:43:31 +01:00
Lennart Poettering 73b6fc7770 resolved: never route DNSSEC traffic to LLMNR/mDNS
LLMNR/mDNS don't support DNSSEC, hence there's no point in routing any
lookups asking for DNSSEC there.

This speeds up looking up DNSSEC RRs for top-level domains, since we
don't have to wait for LLMNR to complete.
2021-02-12 21:41:01 +01:00
Zbigniew Jędrzejewski-Szmek b85ee926a8 syscall-tables: add missing preposition and fix file name path
I added an extension in 1f6f8cc803 but
forgot to fix the consumer script.
2021-02-12 18:51:27 +01:00
Lennart Poettering e7a8f6b66f Merge pull request #18558 from poettering/have-tpm2
ask the uefi firmware if TPM2 support is available
2021-02-12 15:49:20 +01:00
Yu Watanabe 53ae4762ef network: address: do not set IFA_F_PERMANENT flag
The flag is automatically set by kernel when the valid lifetime is
infinite. Note that the flag in netlink message for IPv4 address is
ignored. See set_ifa_lifetime() in kernel's net/ipv4/devinet.c.
But the flag is honored for IPv6 address. And if the flag is set with
finite valid lifetime, the address will not removed automatically by
the kernel.
2021-02-12 23:09:21 +09:00
Yu Watanabe a8481354f0 network: address: also set IFA_FLAGS on remove
If an address is assigned with IFA_F_MANAGETEMPADDR, then the flag must
be also set on remove. Otherwise, temporary addresses will not be
removed. See also inet6_rtm_deladdr() in kernel's net/ipv6/addrconf.c.

Fixes #13218.
2021-02-12 23:09:21 +09:00
Yu Watanabe 111ce98419 network: dhcp6: change link state into "configuring" only when a new address or route will be assigned 2021-02-12 22:44:05 +09:00
Yu Watanabe 24b445c2ce network: ndisc: change link state into "configuring" only when a new address or route will be assigned 2021-02-12 22:44:05 +09:00
Yu Watanabe b54aed29c6 network: dhcp6: fix condtion check 2021-02-12 22:43:39 +09:00
Yu Watanabe 0ef9f3c76f network: set return value at the end of the function
The later netlink_call_async() call may fail. We should not touch the
return value when the function failed.
2021-02-12 22:43:10 +09:00
Yu Watanabe d9eee312a7 network: make address_configure() or friends return 1 when the address is new 2021-02-12 22:43:10 +09:00
Zbigniew Jędrzejewski-Szmek e81fd9dd23 Merge pull request #18544 from yuwata/tree-wide-use-error-in-xxx_from_string
tree-wide: use error in xxx_from_string()
2021-02-12 12:16:23 +01:00
Zbigniew Jędrzejewski-Szmek 8c2524c7fd core: pahole optimization of struct Unit
We had a lone 'bool job_running_timeout_set:1', which generated a hole. Let's
move things around a bit. The structure is a tiny bit smaller and has less
holes:
        /* size: 1192, cachelines: 19, members: 149 */
        /* sum members: 1175, holes: 3, sum holes: 11 */
        /* sum bitfield members: 27 bits, bit holes: 1, sum bit holes: 7 bits */
        /* bit_padding: 14 bits */
        /* last cacheline: 40 bytes */

        /* size: 1184, cachelines: 19, members: 149 */
        /* sum members: 1175, holes: 1, sum holes: 4 */
        /* sum bitfield members: 27 bits (3 bytes) */
        /* bit_padding: 13 bits */
        /* last cacheline: 32 bytes */
2021-02-12 11:59:59 +01:00
Zbigniew Jędrzejewski-Szmek ef3fc326b9 manager: remove unnecessary conditional 2021-02-12 11:59:59 +01:00
Zbigniew Jędrzejewski-Szmek 9466ec13a5 core: add helper macros for deserialization
A helper function would seem more natural, but there are two reasons why a
macro is needed:
- many bool fields are bitfields, so we can't take a pointer, and using a macro
  allows us to avoid taking a pointer.
- we have a few diffent types (bool, uint64_t, FreezerState), and we can have
  type safety without specifying the type by using the macro.

This also makes the error messages more informative: they print the exact field
identifier that failed, which is more useful for debugging than a description.
2021-02-12 11:59:41 +01:00
Zbigniew Jędrzejewski-Szmek 2d3b784dfb core: split out a few funcs into unit-serialize.[ch]
Just a straightforward move and resulting include file adjustments.
2021-02-12 11:36:24 +01:00
Zbigniew Jędrzejewski-Szmek 41b88bb8ad sd-bus: standarize on NULL for empty signature in method calls
We would use sometimes "" and sometimes NULL. They are equivalent, so let's use
NULL everywhere, except for a two places in tests.
2021-02-12 11:36:24 +01:00
Zbigniew Jędrzejewski-Szmek 63ab06c4d2 sd-bus: extend sd_bus_message_read_strv() to paths and signatures
It's rather convenient to be able to read all three types with this function.
Strictly speaking this change is not fully compatible, in case someone was
relying on sd_bus_message_read_strv() returning an error for anything except
"as", but I hope nobody was doing that.
2021-02-12 11:36:24 +01:00
Lennart Poettering 537c10f937 condition: if spelunking through /sys/class/tpmrm doesn't work ask EFI if TPM2 exists
This makes ConditionSecurity=tpm2 work reliably during early boot: if
Linux doesn't know about the TPM2 then maybe the firmware does.
2021-02-11 23:12:46 +01:00
Lennart Poettering b2a220492b bootctl: show whether the firmware has TPM2 support 2021-02-11 23:11:56 +01:00
Lennart Poettering d0ddaf587f efi-loader: add efi_has_tpm2() helper
The helper checks if the UEFI firmware is hooked up to a TPM2 chip. This
is useful to know in trusted boot scenarios, in particular during early
boot in auto-enroll scenarios where we want to know whether TPM2 is
available or not, and the Linux drivers are not loaded yet, and where it
might or not be worth waiting for it.
2021-02-11 23:10:07 +01:00
Lennart Poettering 5b4c163002 efivars: debug log if we fail to detect whether /sys/firmware/efi/ exists 2021-02-11 23:09:54 +01:00
Yu Watanabe b3f9c17a6b tree-wide: use free_and_strdup_warn() 2021-02-12 03:05:08 +09:00
Yu Watanabe 37c0b60177 network: automatically set NLM_F_REPLACE flag
The difference between sd_rtnl_message_new_addr() and
sd_rtnl_message_new_addr_update() is only whether NLM_F_REPLACE flag
will be set or not.

If an address is already assigned, then we need to set NLM_F_REPLACE
flag, otherwise, address_configure() will be fail.

This makes address_configure() judge whether we should use the flag or
not.
2021-02-12 01:50:14 +09:00
Yu Watanabe fe44ce8dba network: address: also logs preferred lifetime 2021-02-12 01:49:59 +09:00
Yu Watanabe 7fb1d980af tree-wide: propagate error in xxx_from-string() 2021-02-12 01:19:18 +09:00
Yu Watanabe bde8467a0d network: dhcp: use string table 2021-02-12 01:19:18 +09:00
Yu Watanabe 58f99ed8a8 string-table: introduce DEFINE_STRING_TABLE_LOOKUP_FROM_STRING() 2021-02-12 01:19:18 +09:00
Yu Watanabe e4ffe10367 network: route: use _WITH_FALLBACK macros 2021-02-12 01:19:18 +09:00
Yu Watanabe 0fcc4e7484 networkd: lldp: use string table 2021-02-12 01:19:13 +09:00
Yu Watanabe 641bcbc56b string-table: introduce DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN() 2021-02-12 01:17:13 +09:00
Yu Watanabe b98680b2b8 tree-wide: use error codes in xxx_from_string() 2021-02-12 01:17:13 +09:00
Yu Watanabe 0cbb768aba conf-parser: use return codes in xxx_from_string()
Follow-up for #11484.
2021-02-12 01:17:06 +09:00
Michal Koutný 873446f2e4 Revert "Silence cgroups v1 read-only filesystem warning"
PID 1 will now check upfront which v1 controller hiearchies are
available and modifiable and therefore it will not attempt to touch
them. If we get an EROFS failure then, it points to another
inconsistency so we will report it again. The revert also simplifies the
code a bit.
2021-02-11 16:59:50 +01:00
Michal Koutný 0fa7b50053 core: Make (user) instance aware of delegated cgroup controllers
systemd user instance assumed same controllers are available to it as to
PID 1. That is not true generally, in v1 (legacy, hybrid) we don't delegate any
controllers to anyone and in v2 (unified) we may delegate only subset of
controllers.
The user instance would fail silently when the controller cgroup cannot
be created or the controller cannot be enabled on the unified hierarchy.

The changes in 7b63961415 ("cgroup: Swap cgroup v1 deletion and
migration") caused some attempts of operating on non-delegated
controllers to be logged.

Make the user instance first check what controllers are availble to it
and narrow operations only to these controllers. The original checks are
kept in place.

Note that daemon-reexec needs to be invoked in order to update the set
of unabled controllers after a change.

Fixes: #18047
Fixes: #17862
2021-02-11 16:58:34 +01:00