Andres Beltran [Mon, 5 Aug 2024 23:43:29 +0000 (23:43 +0000)]
core: add id-mapped mount support for Exec directories
Andres Beltran [Wed, 30 Oct 2024 17:51:53 +0000 (17:51 +0000)]
namespace-util: add util function to check if id-mapped mounts are supported for a given path
Lennart Poettering [Fri, 1 Nov 2024 16:25:49 +0000 (17:25 +0100)]
core/service: don't propagate stop jobs if RestartMode=direct (#34768)
Fixes https://github.com/systemd/systemd/issues/34758
Luca Boccassi [Fri, 1 Nov 2024 13:51:57 +0000 (13:51 +0000)]
resolve: remove always-true superflous check and rename label
Fixes https://github.com/systemd/systemd/security/code-scanning/2900
Luca Boccassi [Fri, 1 Nov 2024 12:32:56 +0000 (12:32 +0000)]
hwdb: update for v257 (#34976)
Lennart Poettering [Fri, 1 Nov 2024 09:17:58 +0000 (10:17 +0100)]
update hwdb
Lennart Poettering [Fri, 1 Nov 2024 09:14:09 +0000 (10:14 +0100)]
hwdb: import newest autosuspend rules from chromeos
Daan De Meyer [Fri, 1 Nov 2024 12:05:46 +0000 (13:05 +0100)]
mkosi: Set BuildSourcesEphemeral=no in mkosi.clangd
We're just running a language server so no need to put a writable
overlay on top of the build sources to prevent modifications. This
hopefully helps the language server track modifications to the source
files better.
Luca Boccassi [Fri, 1 Nov 2024 12:25:35 +0000 (12:25 +0000)]
coredump: lock down EnterNamespace= mount even more (#34975)
Let's disable symlink following if we attach a container's mount tree to
our own mount namespace. We afte rall mount the tree to a different
location in the mount tree than where it was inside the container, hence
symlinks (if they exist) will all point to the wrong places (even if
relative, some might point to other places). And since symlink attacks
are a thing, and we let libdw operate on the tree, let's lock this down
as much as we can and simply disable symlink traversal entirely.
dependabot[bot] [Fri, 1 Nov 2024 09:28:07 +0000 (09:28 +0000)]
build(deps): bump meson from 1.5.2 to 1.6.0 in /.github/workflows
Bumps [meson](https://github.com/mesonbuild/meson) from 1.5.2 to 1.6.0.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/1.5.2...1.6.0)
---
updated-dependencies:
- dependency-name: meson
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Luca Boccassi [Fri, 1 Nov 2024 11:39:26 +0000 (11:39 +0000)]
Update NEWS
Luca Boccassi [Fri, 1 Nov 2024 11:29:19 +0000 (11:29 +0000)]
util-lib/systemd-run: implement race-free PTY peer opening (#34953)
This makes use of the new TIOCGPTPEER pty ioctl() for directly opening a
PTY peer, without going via path names. This is nice because it closes a
race around allocating and opening the peer. And also has the nice
benefit that if we acquired an fd originating from some other
namespace/container, we can directly derive the peer fd from it, without
having to reenter the namespace again.
Luca Boccassi [Fri, 1 Nov 2024 11:18:57 +0000 (11:18 +0000)]
tweaks to ANSI sequence (OSC) handling (#34964)
Fixes: #34604
Prompted by that I realized we do not correctly recognize both "ST"
sequences we want to recognize, fix that.
Luca Boccassi [Fri, 1 Nov 2024 11:14:04 +0000 (11:14 +0000)]
Homed update policy: user changing own settings (#31153)
Rework of #30109 to deal with changes in #30840 and discussed changes to
behavior
Depends on and includes #30840
Fixes https://github.com/systemd/systemd/issues/34268
Luca Boccassi [Fri, 1 Nov 2024 11:10:21 +0000 (11:10 +0000)]
network: update tunnel or vxlan with Local=dhcp4 and friends (#34957)
Fixes #24854.
Luca Boccassi [Mon, 28 Oct 2024 19:58:58 +0000 (19:58 +0000)]
core: add read-only flag for exec directories
When an exec directory is shared between services, this allows one of the
service to be the producer of files, and the other the consumer, without
letting the consumer modify the shared files.
This will be especially useful in conjunction with id-mapped exec directories
so that fully sandboxed services can share directories in one direction, safely.
Adrian Vovk [Wed, 24 Apr 2024 23:41:03 +0000 (19:41 -0400)]
test: Test user record selfModifiable behavior
Adrian Vovk [Fri, 2 Feb 2024 03:53:09 +0000 (22:53 -0500)]
homed: Allow user to change parts of their record
This allows an unprivileged user that is active at the console to change
the fields that are in the selfModifiable allowlists (introduced in a
previous commit) without authenticating as a system administrator.
Administrators can disable this behavior per-user by setting the
relevant selfModifiable allowlists, or system-wide by changing the
policy of the org.freedesktop.home1.update-home-by-owner Polkit action.
Adrian Vovk [Wed, 24 Apr 2024 22:12:54 +0000 (18:12 -0400)]
user-record: Introduce selfModifiable fields
Allows the system administrator to configure what fields the user is
allowed to edit about themself, along with hard-coded defaults.
dependabot[bot] [Fri, 1 Nov 2024 09:01:41 +0000 (09:01 +0000)]
build(deps): bump actions/checkout from 4.2.0 to 4.2.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/
d632683dd7b4114ad314bca15554477dd762a938...
11bd71901bbe5b1630ceea73d27597364c9af683)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Lennart Poettering [Fri, 1 Nov 2024 09:03:15 +0000 (10:03 +0100)]
man: <strong> is not a valid docbook tag, but <emphasis> is
Lennart Poettering [Fri, 1 Nov 2024 09:02:55 +0000 (10:02 +0100)]
update NEWS
Lennart Poettering [Fri, 1 Nov 2024 09:05:32 +0000 (10:05 +0100)]
coredump: rename gather_pid_mount_tree_fd() → acquire_pid_mount_tree_fd()
From my understanding of the english language "gather" imples there are
multiple things to gather. But here there's only one, hence use
"acquire"
Lennart Poettering [Fri, 1 Nov 2024 09:03:26 +0000 (10:03 +0100)]
coredump: lock down EnterNamespace= mount even more
Let's disable symlink following if we attach a container's mount tree to
our own mount namespace. We afte rall mount the tree to a different
location in the mount tree than where it was inside the container, hence
symlinks (if they exist) will all point to the wrong places (even if
relative, some might point to other places). And since symlink attacks
are a thing, and we let libdw operate on the tree, let's lock this down
as much as we can and simply disable symlink traversal entirely.
Lennart Poettering [Fri, 1 Nov 2024 07:15:05 +0000 (08:15 +0100)]
coredump: rework protocol between coredump pattern handler and processing service (#34970)
In
https://github.com/systemd/systemd/commit/
68511cebe58977ea68ae4f57c6462e979efd1cff
the ability to pass the
coredump's mount namespace fd from the coredump patter handler was added
to systemd-coredump. For this the protocol was augmented, in attempt to
provide both forward and backward compatibility.
The protocol as of v256: one or more datagrams with journal log fields
about the coredump are sent via an SOCK_SEQPACKET connection. It is
finished with a zero length datagram which carries the coredump fd (this
last datagram is called "sentinel" sometimes).
The protocol after
https://github.com/systemd/systemd/commit/
68511cebe58977ea68ae4f57c6462e979efd1cff
is extended
so that after the sentinal a 2nd sentinel is sent, with a pair of fds:
the coredump fd *again* and a mount fd (acquired via open_tree()) of the
container's mount tree. It's a bit ugly to send the coredump fd a 2nd
time, but what's more important the implementation didn't work: since on
SOCK_SEQPACKET a zero sized datagram cannot be distinguished from EOF
(which is a Linux API design mistake), an early EOF would be
misunderstood as a zero size datagram lacking any fd, which resulted in
protocol termination.
Moreover, I think if we touch the protocol we should make the move to
pidfs at the same time.
All of the above is what this protocol rework addresses.
1. A pidfd is now sent as well
2. The protocol is now payload, followed by the coredump fd datagram (as
before). But now followed by a second empty datagram with a pidfd,
and a third empty datagram with the mount tree fd. Of this the latter
two or last are optional. Thus, it's now a stream of payload
datagrams with one, two or three fd-laden datagrams as sentinel. If
we read the 2nd or 3rd sentinel without an attached fd we assume this
is actually an EOF (whether it actually is one or not doesn't matter
here). This should provide nice up and down compatibility.
3. The mount_tree_fd is moved into the Context object. The pidfd is
placed there too, as a PidRef. Thus the data we pass around is now
the coredump fd plus the context, which is simpler and makes a lot
more semantical sense I think.
4. The "first" boolean is replaced by an explicit state engine enum
Fixes: https://github.com/systemd/systemd/issues/34130
Lennart Poettering [Thu, 31 Oct 2024 16:02:59 +0000 (17:02 +0100)]
coredump: make check that all argv[] meta data fields are passed strict
Otherwise, if some field is not supplied we might end up parsing a NULL
string later. Let's catch that early.
Lennart Poettering [Thu, 31 Oct 2024 15:53:39 +0000 (16:53 +0100)]
coredump: use memory_startswith() when looking at a data blob
Lennart Poettering [Thu, 31 Oct 2024 15:05:49 +0000 (16:05 +0100)]
iovw: normalize destructors
instead of passing a boolean picking the destruction method just have
different functions. That's much nicer in context of _cleanup_, and how
we usually do things.
Lennart Poettering [Thu, 31 Oct 2024 15:00:13 +0000 (16:00 +0100)]
iovw: add simpler iovw_done() destructor
Lennart Poettering [Thu, 31 Oct 2024 14:44:54 +0000 (15:44 +0100)]
coredump: move to _cleanup_ for destroying iovw object
Lennart Poettering [Thu, 31 Oct 2024 14:37:09 +0000 (15:37 +0100)]
coredump: parse rlimit field at same place as other fields
Lennart Poettering [Thu, 31 Oct 2024 14:33:44 +0000 (15:33 +0100)]
coredump: parse signal number at the same time as parsing other fields
Lennart Poettering [Thu, 31 Oct 2024 14:15:33 +0000 (15:15 +0100)]
coredump: rename save_context() → context_parse_iovw()
The function doesn't "save" anything, it just parses iovw into the
individual fields, hence name the function accordingly.
Lennart Poettering [Thu, 31 Oct 2024 14:11:39 +0000 (15:11 +0100)]
coredump: acquire some process fields via pidref
Use pidref to acquire some fields. This just makes use of the pidref
helpers we already have. We acquire a lot of other data via classic pids
still, but for that we first have to write race-free pidref getters,
hence leave that for another time.
Lennart Poettering [Thu, 31 Oct 2024 13:52:43 +0000 (14:52 +0100)]
coredump: rework protocol between coredump pattern handler and processing service
In
68511cebe58977ea68ae4f57c6462e979efd1cff the ability to pass the
coredump's mount namespace fd from the coredump patter handler was added
to systemd-coredump. For this the protocol was augmented, in attempt to
provide both forward and backward compatibility.
The protocol as of v256: one or more datagrams with journal log fields
about the coredump are sent via an SOCK_SEQPACKET connection. It is
finished with a zero length datagram which carries the coredump fd (this
last datagram is called "sentinel" sometimes).
The protocol after
68511cebe58977ea68ae4f57c6462e979efd1cff is extended
so that after the sentinal a 2nd sentinel is sent, with a pair of fds:
the coredump fd *again* and a mount fd (acquired via open_tree()) of the
container's mount tree. It's a bit ugly to send the coredump fd a 2nd
time, but what's more important the implementation didn't work: since on
SOCK_SEQPACKET a zero sized datagram cannot be distinguished from EOF
(which is a Linux API design mistake), an early EOF would be
misunderstood as a zero size datagram lacking any fd, which resulted in
protocol termination.
Moreover, I think if we touch the protocol we should make the move to
pidfs at the same time.
All of the above is what this protocol rework addresses.
1. A pidfd is now sent as well
2. The protocol is now payload, followed by the coredump fd datagram (as
before). But now followed by a second empty datagram with a pidfd,
and a third empty datagram with the mount tree fd. Of this the latter
two or last are optional. Thus, it's now a stream of payload
datagrams with one, two or three fd-laden datagrams as sentinel. If
we read the 2nd or 3rd sentinel without an attached fd we assume this
is actually an EOF (whether it actually is one or not doesn't matter
here). This should provide nice up and down compatibility.
3. The mount_tree_fd is moved into the Context object. The pidfd is
placed there too, as a PidRef. Thus the data we pass around is now
the coredump fd plus the context, which is simpler and makes a lot
more semantical sense I think.
4. The "first" boolean is replaced by an explicit state engine enum
Fixes: #34130
Lennart Poettering [Thu, 31 Oct 2024 13:51:06 +0000 (14:51 +0100)]
coredump: correct debug log message
Lennart Poettering [Thu, 31 Oct 2024 13:50:41 +0000 (14:50 +0100)]
coredump: minor modernizations
Lennart Poettering [Thu, 31 Oct 2024 13:45:38 +0000 (14:45 +0100)]
coredump: rename pid → leader_pid
Let's rename this local variable, since we are not operating on the
coredump process here after all, but on the leader of the namespace the
coredump process in, which is quite different, hence let's make this
very clear via the name.
Lennart Poettering [Thu, 31 Oct 2024 22:07:48 +0000 (23:07 +0100)]
update TODO
Yu Watanabe [Thu, 31 Oct 2024 19:02:54 +0000 (04:02 +0900)]
sd-varlink: suppress one log message when callback already successfully enqueued an error response
Follow-up for
d2ebf5cc1d59e29139f06efaa3a9b2c184cdaa25.
The detailed error response is already logged, hence not necessary to
log again with the errno converted from the error response, which typically
less informative, e.g.
===
varlink-26-26: Setting state idle-server
varlink-26-26: Received message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{"service":""}}
varlink-26-26: Changing state idle-server → processing-method
varlink-26-26: Sending message: {"error":"io.systemd.UserDatabase.BadService","parameters":{}}
varlink-26-26: Changing state processing-method → processed-method
varlink-26-26: Callback for io.systemd.UserDatabase.GetUserRecord returned error: Invalid request descriptor
varlink-26-26: Changing state processed-method → idle-server
varlink-26-26: Got POLLHUP from socket.
===
Luca Boccassi [Thu, 31 Oct 2024 21:10:28 +0000 (21:10 +0000)]
Rework sysupdate meson options (#34832)
systemd-sysupdated is still unstable and we'd like to make breaking
changes to it even after the v257 release, so we document it as such and
disable building it by default in release builds. The distro can still
opt-in, and we still build it in developer mode so it has CI coverage
Zbigniew Jędrzejewski-Szmek [Wed, 30 Oct 2024 13:21:09 +0000 (14:21 +0100)]
meson: add separate option for sysupdated, disable in release builds
This commit introduces a build-time option to enable/disable sysupdated
separately from sysupdate. 'auto' translated to enabled by default in
developer builds.
Lennart Poettering [Thu, 31 Oct 2024 20:48:18 +0000 (21:48 +0100)]
Drop trailing NUL in .sbat/.sdmagic sections (#34950)
Lennart Poettering [Thu, 31 Oct 2024 20:47:45 +0000 (21:47 +0100)]
logind/systemctl: one follow-up for DesignatedMaintenanceWindow (#34966)
Fixes https://github.com/systemd/systemd/issues/33429
Lennart Poettering [Thu, 31 Oct 2024 20:43:18 +0000 (21:43 +0100)]
machine: several follow-ups for recent change (#34882)
Follow-ups for #34761.
Lennart Poettering [Thu, 31 Oct 2024 14:39:34 +0000 (15:39 +0100)]
sd-json: don't accidentally convert between unsigned/signed when parsing signal
Mike Gilbert [Thu, 24 Oct 2024 16:24:35 +0000 (12:24 -0400)]
posix_spawn_wrapper: do not set POSIX_SPAWN_SETSIGDEF flag
Setting this flag is a noop without a corresponding call to
posix_spawnattr_setsigdefault.
If we call posix_spawnattr_setsigdefault with a full signal set,
it causes glibc's posix_spawn implementation to call sigaction 63 times,
once for each signal. That seems wasteful.
This feature is really only useful for signals which have their
disposition set to SIG_IGN. Otherwise the dispostion gets set to
SIG_DFL automatically, either by clone(CLONE_CLEAR_SIGHAND) or the
subsequent execve.
As far as I can tell, systemd does not have any signals set to SIG_IGN
under normal operating conditions.
Mike Yuan [Thu, 31 Oct 2024 14:46:27 +0000 (15:46 +0100)]
bus-common-errors: use more appropriate errno for BUS_ERROR_DESIGNATED_MAINTENANCE_TIME_NOT_SCHEDULED
Fixes #33429
Mike Yuan [Thu, 31 Oct 2024 14:45:15 +0000 (15:45 +0100)]
systemctl: don't fall back to immediate shutdown silently if we cannot schedule one
The previous behavior of systemctl --when= seems absurd, i.e.
if we fail to schedule shutdown in the future it's performed
immediately. Let's instead hard fail, which also removes the need
of specializing on certain errnos (preparation for later commits).
Mike Yuan [Thu, 31 Oct 2024 14:33:07 +0000 (15:33 +0100)]
logind-dbus: return appropriate errno for unexpected errors
Follow-up for
0e10c3d8724b0a5d07871c9de71565ac91dd55b7
Mike Yuan [Sat, 17 Aug 2024 18:33:12 +0000 (20:33 +0200)]
systemctl: use the retval of must_be_root()
Zbigniew Jędrzejewski-Szmek [Wed, 30 Oct 2024 14:30:53 +0000 (15:30 +0100)]
boot: stop appending NUL to .sdmagic and .sbat sections
Those text sections had a trailing NUL byte. It's debatable whether this is a
good idea or not. Correctly written consumers will look at the section size so
they wouldn't need this. Shim doesn't use a trailing NUL, so let's follow suit.
Fixes https://github.com/systemd/systemd/issues/33731.
898e9edc469f87fdb6018128bac29eef0a5fe698 reworked this code, but didn't actually
change the logic. We have always been appending the trailing zero by using a
NUL-terminated string as the section contents. (I checked this with v253.18
from before the elf2efi rework.)
.sdmagic contains a string like "#### LoaderInfo: systemd-boot 257~devel ####",
which changes with each version, so previous versions would compare unequal
anyway, so we don't need to worry about backwards compatibility.
Daan De Meyer [Thu, 31 Oct 2024 11:44:13 +0000 (12:44 +0100)]
mkosi: Install gdb in centos/fedora build image
Lack of gdb-add-index has become a fatal error in Rawhide/c10s so
let's install gdb to make rpmbuild happy.
Lennart Poettering [Thu, 31 Oct 2024 10:22:39 +0000 (11:22 +0100)]
string-util: also check for 0x1b 0x5c ST when stripping ANSI from strings
Lennart Poettering [Thu, 31 Oct 2024 09:37:02 +0000 (10:37 +0100)]
terminal-util: define ANSI_OSC as macro for the OSC terminal sequence prefix
Lennart Poettering [Thu, 31 Oct 2024 09:10:37 +0000 (10:10 +0100)]
ptyfwd: document why we only honour two of the three kinds of ST
Lennart Poettering [Thu, 31 Oct 2024 09:05:13 +0000 (10:05 +0100)]
tree-wide: prefer generating 0x1B 0x5C as ANSI sequence "ST"
OSC sequences can be closed with one of three terminators:
1. ASCII code 7, aka BEL, aka ^G, aka \x07, aka \a
2. ASCII code 156, aka \x9c
2. Pair of ASCII code 27 followed by ASCII code 92, aka \x1b\x5c
Of these, in some corner case scenarios BEL makes problem (see #34604).
Hence switch away from that wherever we use it, and prefer the \x1b\x5c
instead. That's preferable over \x9c, since the latter is also a valid
UTF-8 codepoint. See discussion here for example:
https://gist.github.com/egmontkob/
eb114294efbcd5adb1944c9f3cb5feda#the-escape-sequence
Fixes: #34604
Lennart Poettering [Thu, 31 Oct 2024 08:51:32 +0000 (09:51 +0100)]
string-util: it's called OSC sequence, not CSO sequence
Yu Watanabe [Thu, 31 Oct 2024 02:59:10 +0000 (11:59 +0900)]
resolve: do not try to send varlink error more than once
After
d2ebf5cc1d59e29139f06efaa3a9b2c184cdaa25, sd_varlink_error() and
friends return negative errno.
Fixes https://github.com/systemd/systemd/pull/34946#discussion_r1823703636.
Yu Watanabe [Mon, 28 Oct 2024 17:18:05 +0000 (02:18 +0900)]
test-network: add test case for tunnel Local=dhcp4
For issue #24854.
Yu Watanabe [Mon, 28 Oct 2024 16:23:54 +0000 (01:23 +0900)]
network: update tunnel or vxlan interface if the local address is changed
If a tunnel or vxlan is configured with Local=dhcp4 or so, then the
local address needs to be changed when it is changed.
Fixes #24854.
Yu Watanabe [Thu, 31 Oct 2024 01:24:06 +0000 (10:24 +0900)]
machine: lookup_machine_by_name_or_pidref() returns negative errno on failure
This effectively reverts
d2c1451b7398f13439b694450a23def3cf31c8db.
After the commit
d2ebf5cc1d59e29139f06efaa3a9b2c184cdaa25, sd_varlink_error()
returns negative errno, hence the function always return negative errno
on failure.
Yu Watanabe [Fri, 25 Oct 2024 17:17:29 +0000 (02:17 +0900)]
machine: use JSON_BUILD_PAIR_STRV_ENV_PAIR_NON_EMPTY()
Also use JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL().
Yu Watanabe [Fri, 25 Oct 2024 17:09:01 +0000 (02:09 +0900)]
sd-json: introduce JSON_BUILD_PAIR_STRV_ENV_PAIR_NON_EMPTY() macro
It is similar to JSON_BUILD_PAIR_STRV_NON_EMPTY, but takes the
list of environment variables.
Yu Watanabe [Fri, 25 Oct 2024 17:07:02 +0000 (02:07 +0900)]
sd-json: use strv_env_get_merged()
Yu Watanabe [Fri, 25 Oct 2024 17:01:19 +0000 (02:01 +0900)]
env-util: introduce strv_env_get_merged()
Yu Watanabe [Fri, 25 Oct 2024 16:46:39 +0000 (01:46 +0900)]
env-util: replace 'char **' with 'char**'
Yu Watanabe [Thu, 31 Oct 2024 02:02:23 +0000 (11:02 +0900)]
TEST-13-NSPAWN: add test cases for listing multiple machines
Yu Watanabe [Thu, 24 Oct 2024 15:42:28 +0000 (00:42 +0900)]
TEST-13-NSPAWN: trivially kill all processes in the container on termination
Follow-up for
841988f80d2440501a3baddba712cdb955225ab7.
No functional change, as $PID is 0 when the trap is inserted.
Yu Watanabe [Thu, 24 Oct 2024 15:24:04 +0000 (00:24 +0900)]
TEST-13-NSPAWN: check returned machine list
Yu Watanabe [Wed, 23 Oct 2024 21:00:53 +0000 (06:00 +0900)]
TEST-13-NSPAWN: fix race between container exit and varlink call
Follow-up for
3cb72c7862d8950bc2a963aaa3ca3255eea374b6.
The test container exits shortly, hence when varlinkctl is called, the
container may be already terminated. Let's make the container live
infinitely.
Also, this makes the os-release files removed after the container is started.
Yu Watanabe [Thu, 24 Oct 2024 10:32:36 +0000 (19:32 +0900)]
Yu Watanabe [Thu, 24 Oct 2024 10:29:57 +0000 (19:29 +0900)]
machine: use sd_json_variant_append_arraybo() and JSON_BUILD_PAIR_VARIANT_NON_NULL()
Follow-up for
45755275e5ae747bf79e6c7bdd9a055711ebc71f.
Yu Watanabe [Thu, 31 Oct 2024 01:58:25 +0000 (10:58 +0900)]
NEWS: fix typo
Yu Watanabe [Thu, 31 Oct 2024 00:43:12 +0000 (09:43 +0900)]
sd-varlink: update comment
Lennart Poettering [Wed, 30 Oct 2024 14:31:08 +0000 (15:31 +0100)]
sd-varlink: change sd_varlink_error() to always return an error
Let's make sure that sd_varlink_error() always returns an error code, so
that we can use it in a style "return sd_varlink_error(…);" everywhere,
which has two effects: return a good error reply to clients, and exit
the current stack frame with a failure code.
Interestingly sd_varlink_error_invalid_parameter() already worked like
this in some cases, but sd_varlink_error() itself didn't.
This is an alternative to the error handling tweak proposed in #34882,
but I think is a lot more generically useful, since it establishes a
pattern.
I checked our codebase, and this change should generally be OK without
breaking callsites, since the current callers (with exception of the
machined case from #34882) called sd_varlink_error() in the outermost
varlink method call dispatch stack frame, where this behaviour change
does not alter anything.
This is similar btw, how sd_bus_error_setf() and friends always return
error codes too, synthesized from its parameters.
Lennart Poettering [Wed, 30 Oct 2024 14:30:16 +0000 (15:30 +0100)]
sd-varlink: add helper VARLINK_STATE_WANTS_REPLY()
Let's add a helper that detects whether we still need to reply to a
state. This should make the logic easier to follow.
Lennart Poettering [Wed, 30 Oct 2024 14:29:29 +0000 (15:29 +0100)]
sd-varlink: don't show error code we already decoded as part of the log message
Lennart Poettering [Wed, 30 Oct 2024 14:19:12 +0000 (15:19 +0100)]
sd-varlink: if we reply to errors without passing to callback, go through regular error path
If replying with an error fails, we should failt the whole connection,
and not leave the connection in a weird state.
Yu Watanabe [Wed, 30 Oct 2024 23:05:39 +0000 (08:05 +0900)]
firstboot: several cleanups (#34958)
Split out of #33226
Lennart Poettering [Wed, 30 Oct 2024 20:55:13 +0000 (21:55 +0100)]
sd-json: don't use C99 bool in public headers
All our public headers strive to C90 compatibility with a few
extensions, and thus avoided stdbool.h and bool.
The sd_json_format_enabled() helper seems like a poor place to start
requiring stdbool.h now.
Also drop __extension__ since we are not using it anywhere else in very
similar inline functions.
(And we probably should drop any _sd_const declarations on inline
functions. Given that the compiler has the function implementation
around always, because it's in the header there's really no reason to
specify this manually, the compiler can trivially figure this out on its
own. But that's for another time.)
Yu Watanabe [Wed, 30 Oct 2024 22:01:46 +0000 (07:01 +0900)]
network: support reconfiguring netdev (#34909)
Closes #9627
Closes #27177.
Closes #34907.
Replaces #22557.
Lennart Poettering [Wed, 30 Oct 2024 21:33:57 +0000 (22:33 +0100)]
machined: port to pty_open_peer_racefree()
Lennart Poettering [Wed, 30 Oct 2024 15:48:12 +0000 (16:48 +0100)]
run: port over to new pty_open_peer() call
Lennart Poettering [Wed, 30 Oct 2024 15:45:15 +0000 (16:45 +0100)]
terminal-util: add pty_open_peer() helper
This opens a pty peer in one go, and uses the new race-free TIOCGPTPEER
ioctl() to do so – if it is available.
Lennart Poettering [Wed, 30 Oct 2024 15:44:48 +0000 (16:44 +0100)]
terminal-util: various minor modernizations
Various fixes:
1. Adds O_CLOEXEC for two socketpair()s where we forgot it.
2. Uses FORK_WAIT instead of manual wait_for_terminate_and_check()
invocations.
3. Prefix opaque NULL/0 arguments with comments what they are.
4. Add a banch of assert()s, and change flag validation in
open_terminal() to be assert() (since flags mistakes are programming
errors, not runtime errors).
Yu Watanabe [Mon, 28 Oct 2024 16:45:08 +0000 (01:45 +0900)]
man: update documentation for 'networkctl reload'
Yu Watanabe [Sun, 27 Oct 2024 05:23:08 +0000 (14:23 +0900)]
test-network: test for reload of .netdev file of stacked netdev
For issue #9627, #27177, and #34907.
Yu Watanabe [Sun, 27 Oct 2024 07:38:24 +0000 (16:38 +0900)]
network/netdev: replace old NetDev object with newer one on reload
Then, when a .netdev file of a stacked netdev is modified, the netdev
can be reconfigured with the updated setting by something like the
following way:
```
ip link del vlan99
networkctl reload
```
Note, removing the vlan interface in the above example may not be necessary,
e.g. when only VLAN flags, egress mapping, or ingress mapping are updated.
But, it is necessary when VLAN ID is updated.
Closes #9627.
Closes #27177.
Closes #34907.
Replaces #22557.
Yu Watanabe [Mon, 28 Oct 2024 14:42:38 +0000 (23:42 +0900)]
network/netdev: reconfigure netdev if possible
Some netdev configs can be modified after the interface is created.
Let's allow to reconfigure existing interfaces.
Yu Watanabe [Sun, 27 Oct 2024 07:37:17 +0000 (16:37 +0900)]
network/netdev: move calls of netdev_attach() and netdev_request_to_create() to netdev_load()
No functional change, preparation for later commits.
Daan De Meyer [Wed, 30 Oct 2024 18:03:49 +0000 (19:03 +0100)]
mkosi: Ensure we build with debuginfo
Michal Sekletar [Wed, 30 Oct 2024 13:55:09 +0000 (14:55 +0100)]
coredump: allow only empty messages after first "sentinel"
Michael Ferrari [Wed, 9 Oct 2024 15:30:44 +0000 (17:30 +0200)]
firstboot: generalize prompt_loop more
Allows unifying the custom logic for the hostname and root shell. Root
password prompting remains separate as it's logic is substantially
different to the other prompts.
Michael Ferrari [Tue, 8 Oct 2024 23:19:43 +0000 (01:19 +0200)]
firstboot: use consistent wording for prompts
Michael Ferrari [Tue, 8 Oct 2024 16:58:04 +0000 (18:58 +0200)]
firstboot: clean up welcome message
Michael Ferrari [Mon, 7 Oct 2024 09:02:16 +0000 (11:02 +0200)]
firstboot: order non-interactive options last
Yu Watanabe [Wed, 30 Oct 2024 19:04:55 +0000 (04:04 +0900)]
network/tunnel: reuse existing 6rd sit tunnel (#34938)
split-out of #34909.
Yu Watanabe [Wed, 30 Oct 2024 19:04:33 +0000 (04:04 +0900)]
network/netdev: do not try to update several parameters if the interface already exists (#34937)
split-out of #34909.
Yu Watanabe [Wed, 30 Oct 2024 19:04:10 +0000 (04:04 +0900)]
network: several cleanups for reloading .network files (#34933)
split-out of #34909.