Commit Graph
58746 Commits
Author SHA1 Message Date
Chris Down 91578e5293 dissect-image: Consolidate verity validation and setup
The verity consistency checks and verity setup code also have parallel
blocks for root and usr that do basically identical work. Let's
consolidate them and reduce the footprint for bugs or deviance to
manifest.
2026-03-19 21:37:36 +08:00
Chris Down 779e70a8e8 dissect-image: Merge partition handler code
dissect-image has six(!) different branches with basically the same
code. Let's avoid that and reduce the spaces for bugs or differing
behaviour to subtly creep in.
2026-03-19 21:37:36 +08:00
Chris Down 8a66ad0c66 dissect-image: Fix wrong UUID logged on usr verity partition mismatch
When there's a partition mismatch the USR_VERITY branch logs usr_uuid in
the mismatch message, but the check is actually against usr_verity_uuid.
2026-03-19 21:01:54 +08:00
noxiouzandClaude Opus 4.6 7d5ec30862 network: add unmanaged interface checks to Link.Renew and Link.ForceRenew Varlink methods
The D-Bus counterparts (bus_link_method_renew, bus_link_method_force_renew)
reject calls on unmanaged interfaces with BUS_ERROR_UNMANAGED_INTERFACE,
but the Varlink methods silently succeed. Add the same guard to both
Varlink methods, returning io.systemd.Network.Link.InterfaceUnmanaged,
and declare the error in the IDL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 11:50:45 +00:00
Zbigniew Jędrzejewski-Szmek a0eae2ab7b Stop disabling -Wattributes
In one of the reviews one of the LLMs noticed that the pragma is set but
never unset, so it remains in effect for the rest of the translation
unit. From the comment, it's not clear how old those "old compilers" were,
so let's try if things work without this workaround.
2026-03-19 11:46:30 +01:00
Lennart Poettering 3327a411be vconsole-setup: handle gracefully if setfont/loadkeys are not available
Let's not complain too loudly if these external binaries aren't there.
2026-03-19 08:51:18 +01:00
Lennart Poettering 3d153bfeb6 vconsole-setup: add a bunch of assert()s 2026-03-19 08:51:18 +01:00
Luca Boccassi acb6624fa1 userdb: add birthDate field to JSON user records (#40954)
Add an optional field that can be used to store a user's birth date.
userdb already stores personal metadata (`emailAddress`, `realName`,
`location`) so `birthDate` is a natural fit.
2026-03-18 23:04:03 +00:00
noxiouz 1416d3b69c networkctl: drop unused functions
Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouzandYu Watanabe 689e45a6cd networkctl: use io.systemd.Network.Link.Describe() Varlink method
This makes networkctl fetch bit-rate statistics and offered DHCP
leases via Link.Describe() method instead of D-Bus.

Co-authored-by: Yu Watanabe <watanabe.yu+github@gmail.com>

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz e90ea94392 network: add io.systemd.Network.Link.Describe() Varlink method
The handler returns the JSON produced by link_build_json().

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouzandYu Watanabe 54e8ea6552 networkctl: use io.systemd.service.Reload() method
Co-authored-by: Yu Watanabe <watanabe.yu+github@gmail.com>

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz 6627dfe425 network: implement io.systemd.service.Reload() in networkd
Bind networkd's reload handler to the generic io.systemd.service.Reload
method.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
Yu Watanabe dde311ba14 networkctl: use new varlink methods
Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz 506890fa0d network: add io.systemd.Network.Link.Reconfigure() Varlink method
The handler calls link_reconfigure_full() with UNCONDITIONALLY|CLEANLY
flags and defers the Varlink reply until reconfiguration completes.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz 982a3fa59f network: add io.systemd.Network.Link.ForceRenew() Varlink method
The handler calls sd_dhcp_server_forcerenew() if the server is running
and logs a warning on failure.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz 5e7287c2b5 network: add io.systemd.Network.Link.Renew() Varlink method
The handler calls dhcp4_renew() and logs a warning on failure.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz f8722d4033 network: extend link_reconfigure_full() and manager_reload() for Varlink
Add an sd_varlink* parameter to both functions so Varlink callers can
receive a deferred reply once all async work completes, symmetrically
with the existing sd_bus_message* path.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz 872feaa006 network: add BitRates field to link_build_json() and the Varlink IDL
Expose the speed meter transmit/receive rates as a BitRates struct in
the per-link JSON output and the io.systemd.Network Varlink IDL.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
noxiouz f9ebd7bb06 network: extract link_get_bit_rates() into networkd-speed-meter.c
Move the bit-rate computation out of property_get_bit_rates() in
networkd-link-bus.c into a standalone link_get_bit_rates() helper in
networkd-speed-meter.c, which already owns the speed meter state.

Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:55:52 +00:00
Zbigniew Jędrzejewski-Szmek ba1caf070f Add tmpfiles --inline and use it in one unit file (#41034) 2026-03-18 22:49:11 +01:00
Dylan M. Taylor 7a858878a0 userdb: add birthDate field to JSON user records
Add a birthDate field to the JSON user record, stored internally as a
struct tm with INT_MIN/negative sentinels for unset fields. The field
is serialized as a YYYY-MM-DD string in JSON and validated via
parse_birth_date(), which shares its core logic with
parse_calendar_date() through a new parse_calendar_date_full()
function.

For birth dates, timegm() is called directly (rather than
mktime_or_timegm_usec) to support pre-epoch dates. The wday field is
used to distinguish timegm() failure from a valid (time_t) -1 return.

birthDate is excluded from user_record_self_modifiable_fields(), so
only administrators can set or change it via homectl. The field
remains in the regular (non-privileged) JSON section, keeping it
readable by the user and applications.
2026-03-18 17:33:22 -04:00
seaeunlee 59aed18d69 hostname: add API for getting custom fields from machine-info 2026-03-18 20:47:00 +00:00
Zbigniew Jędrzejewski-Szmek 26230ed5c1 Rename verb functions for consistency and add per-verb constant parameter (#41003)
We often have a pattern where the same verb function is used for
multiple actions. This leads to an antipattern where we figure out what
action needs to be taken from argv[0] multiple times: often once in
arse_argv() to figure out what options are allowed, then once again
implicitly in dispatch_verb(), and then again in the action verb itself.
Let's allow passing a parameter into the verb to simplify this.
2026-03-18 16:46:13 +01:00
Zbigniew Jędrzejewski-Szmek 548816e058 tmpfiles: add --inline
This option is exactly like the one in sysusers. (In fact the
implementation is copied too.) It is occasionally useful to be able to
specify and execute some tmpfiles config not through config files but
directly on the command line. This also makes it very easy to test
config with:
  SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --dry-run --inline ...
2026-03-18 14:58:43 +01:00
Dylan M. Taylor 770958e24a time-util: extract parse_calendar_date() from sysupdate
Move the YYYY-MM-DD date parsing and validation logic from
sysupdate-resource.c into a shared parse_calendar_date() function
in time-util, so it can be reused by other subsystems.
2026-03-18 09:39:06 -04:00
Vitaly Kuznetsov a06992dd16 measure: make tpm_log_tagged_event() measure CC as well
tpm_log_tagged_event() only measures the event to the TPM while
tpm_log_ipl_event() measures the event both to the TPM and CC. Fix the
inconsistency.

Note, this is a potentially breaking change for TDX guests as systemd will
now measure more stuff to the MRTD/RTMRs, reference values for attestation may
need to be adjusted.

Found by Claude Code Review.
2026-03-18 12:35:21 +00:00
Luca Boccassi cd1f2f2ff9 sd-dlopen: make macros to generate .notes.dlopen sections public API (#41047)
If this new scheme of adding dependencies is supposed to be used more
widely we need to start making it easy to add them. So add a new
self-contained header that projects can simply include without the need
to link against libsystemd itself. This will allow them to generate
`.notes.dlopen` sections:

```
> readelf -p .note.dlopen ./l2md

String dump of section '.note.dlopen':
  [     a]  |@FDO
  [    10]  [{"feature":"manifest-json","description":"Manifest-based change detection via gzip and JSON parsing","priority":"suggested","soname":["libz.so.1","libsystemd.so.0"]}]
  [    c2]  |@FDO
  [    c8]  [{"feature":"manifest-http","description":"HTTP transport for lore.kernel.org manifest fetch","priority":"suggested","soname":["libcurl.so.4"]}]
```
2026-03-18 12:33:58 +00:00
Nandakumar Raghavan a4aae32478 ansi-color: fix SYSTEMD_COLORS=true regression when output is piped
The SYSTEMD_COLORS=true/1/yes no longer forced colors
when stdout was not a TTY (e.g. piped), because the COLOR_TRUE bypass
of the terminal_is_dumb() check was accidentally dropped.

Restore the old behavior by guarding the TTY check with
`m != COLOR_TRUE`, so an explicit boolean "true" value continues to
unconditionally force color output regardless of whether stdout is a TTY
or whether $NO_COLOR is set.
2026-03-18 12:03:38 +01:00
Nandakumar Raghavan 36d129a7ad repart: add --grain-size= option for partition alignment
Add a --grain-size= CLI option to override the default 4 KiB partition
alignment grain. Setting --grain-size=1M matches the alignment used by
fdisk/parted and fixes misaligned partitions after small fixed-size
partitions like the 16 KiB verity-sig partition.

Also fix context_place_partitions() to re-align the start offset after
each partition, not just once per free area. Without this, a small
partition would cause all subsequent partitions in the same free area
to start at an unaligned offset.
2026-03-18 10:39:39 +00:00
Zbigniew Jędrzejewski-Szmek 69544de33e bless-boot: use verb function argument 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 1dc35ab944 report: use verb function argument 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 31ddd87da0 tree-wide: extend verbs functions with extra per-verb data parameter
We often have a pattern where the same verb function is used for
multiple actions. This leads to an antipattern where we figure out what
action needs to be taken from argv[0] multiple times: often once in
parse_argv() to figure out what options are allowed, then once again
implicitly in dispatch_verb(), and then again in the action verb itself.
Let's allow passing a parameter into the verb to simplify this.

This matches a pattern we have in conf-parser.h, where we have both
void *userdata (more global) and void *data (per-config item). Here,
I opted for uintptr_t userdata. It seems that most of the time we'll
want to just pass an enum value. This works OK with no casts. I also
tried a void* and union. In both cases, much more boilerplate is needed:
either a cast or a macro to help avoid compiler warnings. uintptr_t
seems generic enough to cover foreseeable usecases with no fuss.

This is a noop refactoring. See next commit for an example.
2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 9e8babc8ab update-utmp: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 5eccdf20ac pull: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 095368238a import-fs: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek b2a55d2fb2 import: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 8fb107aa99 export: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 326824deeb oomctl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 89e3ed81b1 portablectl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek cdf9951fe0 resolvectl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 73a2eafad3 timedatectl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 0950a0c0d1 udevadm: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek f75a6b7564 userdbctl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 26216a7e95 networkctl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 3d72ffc415 machinectl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 165e36e320 hostnamectl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 65c10b815b localectl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 82ac3a24ee importctl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00
Zbigniew Jędrzejewski-Szmek 94a4849947 loginctl: call all verb functions verb_* 2026-03-18 10:28:47 +00:00