Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 752cdf5051 manager: also restart stub listner on reload
Previously, the extra stub listners were stopped but new ones were not
started. Also, the main stub listners were not restarted, hence the
new settings were not applied. This fixes the above two issues.

Note, to fix the issue, we need to keep CAP_NET_BIND_SERVICE capability
to make it allow to bind stub listner later.

Fixes #37843.
2025-06-16 22:02:30 +09:00
Yu Watanabe 9ed99b0793 resolve: several cleanups for manager_dispatch_reload_signal()
- set defaults after all existing configs and setups cleared,
- mention failures are ignored in log messages,
- drop one redundant log message,
- do not return negative errno but exit event loop on critical failure.
2025-06-16 22:02:30 +09:00
Yu Watanabe 872603b583 resolve: several cleanups for manager_new()
- mention the error is ignored in the log message,
- drop redundant log message, as dnssd_load() logs on failure,
- voidify manager_load_delegates().
2025-06-16 22:02:30 +09:00
Yu Watanabe 450a4edfc3 resolve: coding style fix 2025-06-16 22:02:30 +09:00
Yu Watanabe 5d5edcd3f4 resolve: fix indentation 2025-06-16 22:02:30 +09:00
Yu Watanabe 18d79a7f9c network/tunnel: several cleanups for Mode= setting and make sit and ipip tunnel support it (#37853)
Closing #37377.
2025-06-16 20:07:38 +09:00
Yu Watanabe 312e3835ee test-network: add tests for tunnel mode 2025-06-16 17:01:37 +09:00
Yu Watanabe fe94aa316d network/tunnel: make sit and ipip tunnel support Mode= setting
Closing #37377.
2025-06-16 17:01:20 +09:00
Yu Watanabe 8424a70caf network/tunnel: rename Ip6TnlMode to TunnelMode
This also makes ip6tnl can be created without specifying Mode= setting,
as the kernel accepts new-link netlink message without the
IFLA_IPTUN_PROTO attribute.

No effective functional change, just refactoring and preparation for
later change.
2025-06-16 16:58:38 +09:00
Yu Watanabe ce5a54ed9b test-network: add test case for issue #37714
I cannot reproduce the issue with the current git HEAD.
Let's add a test case that is used by the reporter of the issue.
2025-06-15 09:33:23 +09:00
Yu Watanabe 7ce370c466 network: hash_ops related fixlets (#37832)
Fixes #37830.
2025-06-14 02:51:08 +09:00
Yu Watanabe 2c154c54e1 network: use dns_name_hash_ops_free to manage domains 2025-06-14 00:17:14 +09:00
Yu Watanabe 38de38a70d ordered-set: introduce ordered_set_put_strdup_full() and friends which take hash ops 2025-06-14 00:06:43 +09:00
Yu Watanabe 6ffc16dfd9 network: use the same hash ops used when allocated
Fixes #37830.
2025-06-13 23:46:29 +09:00
Yu Watanabe a7deadd763 udev/rules.d: import hwdb before calling net_id builtin
The commit cdcb1eeeb8 adds
ID_NET_NAME_INCLUDE_DOMAIN property support in net_id builtin.
The property is basically set through hwdb. However, previously hwdb was
imported after calling net_id builtin, hence when net_id is called, the
property was never set.

This makes hwdb is imported before calling net_id builtin, so that the
property is set when net_id is called if hwdb has an entry about that
for the interface.

Follow-up for cdcb1eeeb8.
Fixes #37758.
2025-06-13 10:43:21 +01:00
Yu Watanabe d3b7e63068 network/dhcpv4: add ability to use BOOTP (#34888)
BOOTP can be used to sign a static IP to clients. Instead of using the
four message exchange, and Option 53 (DHCP Message Type) there is only a
two message exchange.

Add the following network option to enable BOOTP:

[DHCPv4]
BOOTP=yes

This will allow a two message request / reply sequence that doesn't
require DHCP message types.

Fixes: #34885
2025-06-13 17:12:19 +09:00
Yu Watanabe 1f87275736 network/dhcp4: release previously acquired DHCP lease when BOOTP will be enabled 2025-06-13 14:15:04 +09:00
Yu Watanabe 98a9b0f92a sd-dhcp-client: move comment to relevant place 2025-06-13 13:35:21 +09:00
Yu Watanabe 556f641fb5 dhcp: several coding style cleanups
- rename arguments for storing results,
- reorder arguments to move ret_xyz at the end,
- add several missing assertions.
2025-06-13 13:35:21 +09:00
Yu Watanabe 984ae058dc discover-image: several cleanups around image_discover() (#37813) 2025-06-13 07:57:28 +09:00
Yu Watanabe d604341ca5 sysext: drop unnecessary struct MethodListParameters 2025-06-13 05:13:54 +09:00
Yu Watanabe 361b13ca7e include/linux: update kernel headers from v6.16-rc1 2025-06-12 16:04:40 +01:00
Yu Watanabe 78f8d5ed71 network: also check ID_NET_MANAGED_BY property on reconfigure
Previously, the property was checked only when an uevent is received,
so even if an interface has ID_NET_MANAGED_BY property, the interface
will be configured by networkd when reconfiguration is triggered e.g.
when interface state is changed.

Follow-up for ba87a61d05.
Fixes #36997.
2025-06-12 14:24:50 +09:00
Yu Watanabe a954c1945b test-network: improve bonding tests (#37808) 2025-06-12 14:24:03 +09:00
Yu Watanabe 050d6599ed network: use up_or_down() at several more places 2025-06-11 17:16:08 +01:00
Yu Watanabe 624d369868 discover-image: make image_discover() allocate hashmap when necessary 2025-06-11 22:45:08 +09:00
Yu Watanabe d654b9dcfd discover-image: coding style fixlets 2025-06-11 22:45:08 +09:00
Yu Watanabe b52d575845 machinectl: use _RUNNER_MAX rather than ELEMENTSOF() 2025-06-11 22:41:54 +09:00
Yu Watanabe 093b025548 machinectl: align table 2025-06-11 22:41:54 +09:00
Yu Watanabe 6f5958c74d man/machinectl: underscore is not allowed in machine name
Fixes #27481.
2025-06-11 22:41:53 +09:00
Yu Watanabe c6aae2cd8a test-network: add test case for issue #32186
The reporter said that the issue is caused by BindCarrier=, but
I cannot reproduce it. Anyway, let's test it.
2025-06-11 17:32:46 +09:00
Yu Watanabe 8882519583 test-network: read the current link flags of bond interface
Follow-up for 2700d2c7dc.
2025-06-11 17:18:43 +09:00
Yu Watanabe 114ad16c4d login: drop unnecessary dependency to libacl
With c960ca2be1, logind does not handle
ACL anymore, but triggers events for udevd and udevd updates ACL.
Hence, libacl is not necessary for logind.
2025-06-11 09:18:54 +02:00
Yu Watanabe 5814acca9a resolve: exit from loop for transactions when transactions has been regenerated
Fixes #37458.
2025-06-10 17:30:03 +01:00
Yu Watanabe 75f8298770 Two coding style fixlets (#37799) 2025-06-10 15:28:51 +09:00
Yu Watanabe bdf42d9fd4 sysusers: always initialize ret_xyz when write_temporary_xyz() succeed
No functional change. Just for following our coding style.
2025-06-10 12:57:01 +09:00
Yu Watanabe 58bb08be6d dirent-util: follow our coding style 2025-06-10 12:57:01 +09:00
Yu Watanabe 4081e072ee Several follow-ups for recent header cleanups (#37785) 2025-06-10 01:01:05 +09:00
Yu Watanabe 169d270e81 meson: update generating lists
- config.h is not necessary when generating lists, hence drop it.
- linux/audit.h and libaudit.h are included by missing_audit.h,
  hence not necessary to include them explicitly.
2025-06-09 16:29:49 +01:00
Yu Watanabe afe1567297 include: net/if.h requires features.h
The header uses __THROW, which is defined in features.h, to make the
header self-consistent.
Note, src/basic/include/sys/mount.h also uses __THROW, and includes
features.h.
2025-06-09 22:45:23 +09:00
Yu Watanabe 8139906eaa journal: use poll.h rather than sys/poll.h
This does not change anything, as poll.h is a one-line wrapper of sys/poll.h.
Note that man pages e.g. poll(2) indicate to include poll.h rather than sys/poll.h.
So, let's use poll.h.
2025-06-09 22:45:23 +09:00
Yu Watanabe b5aed60222 selinux-setup.c: drop redundant inclusion of selinux/selinux.h
The header is anyway included by selinux-util.h in below.
2025-06-09 22:45:23 +09:00
Yu Watanabe f37b4031f8 tree-wide: drop unnecessary inclusion of sys/quota.h
As it is included by quota-util.h anyway.
2025-06-09 22:45:23 +09:00
Yu Watanabe e11f01b78a utmp-wtmp: replace _PATH_WTMPX -> WTMPX_FILE
_PATH_WTMPX is a kind of internal definition in glibc, and
WTMPX_FILE should be an exposed definition. Both are same,
let's use WTMPX_FILE.
Note, for utmp, we use UTMPX_FILE, rather than _PATH_UTMPX.
Let's use consistent macros.
2025-06-09 22:45:23 +09:00
Yu Watanabe afcb6d671b forward: also include paths.h
It provides several important constants, especially _PATH_BSHELL, which
is used in PID1, executor, and run. The header has been included
indirectly through e.g. libmount.h, mntent.h, utmpx.h, and so on.
Let's explicitly include it in forward.h, as libmount.h and friends that
includes paths.h are irrelevant to _PATH_BSHELL, and we may easily fail
to build when code is touched.
The header is not heavy, hence should not hurt anything.
2025-06-09 22:45:23 +09:00
Yu Watanabe a60495c44b cryptsetup-util: move definition of crypt_token_max()
As it uses streq(), but string-util.h is not included in the header.
2025-06-09 22:45:23 +09:00
Yu Watanabe 14dc330c9c libcrypt-util: include random-util.h
Necessary for crypto_random_bytes(), which is used in the branch that
HAVE_CRYPT_GENSALT_RA is false. Unfortunately, our CIs tested only the
other branch.
2025-06-09 22:45:23 +09:00
Yu Watanabe 6c12289fc8 meson: fix doubled # before include
Follow-up for b5337d1d52.
2025-06-09 10:20:54 +01:00
Yu Watanabe b5bd717fcd test: extend timeout and enable generating debugging logs
Not sure why the test failed, but maybe the test environment is too
slow? Even this does not fix the failure, by enabling debugging logs,
this hopefully provides more useful information for debugging.

For issue #37685.
2025-06-06 19:43:32 +01:00
Yu Watanabe c928defc08 run: ignore bus connection error in acquiring invocation ID (#37763)
This introduce bus_error_is_connection(), and use it where applicable.
Then, this makes connection errors in acquiring invocation ID by
systemd-run handled gracefully, like we already do other places.

Fixes #37675.
2025-06-07 01:55:21 +09:00
Yu Watanabe 6c2558a2fc tree-wide: allow building with -Wgnu-variable-sized-type-not-at-end option for clang (#37499)
Follow-up for #36993.
Closes #37497.
2025-06-07 01:02:38 +09:00
Yu Watanabe eb09b4b546 run: ignore bus connection error in acquiring invocation ID
Similar to 2b983b43c6, but for acquiring
invocation ID.

Fixes #37675.
2025-06-07 00:01:15 +09:00
Yu Watanabe 687a92a1b6 sd-device: replace '!' with '/' before calling sd_device_new_from_subsystem_sysname()
Device ID uses device directory name as is, hence may contain '!', but
sd_device_new_from_subsystem_sysname() expects that the input is sysname.
So, we need to replace '!' with '/'.

Follow-up for 1393c5a2a4.
Fixes #37711.
2025-06-06 23:59:02 +09:00
Yu Watanabe ac004f4cc9 tree-wide: introduce bus_error_is_connection() and use it where applicable 2025-06-06 21:42:25 +09:00
Yu Watanabe f2a8cc943d sd-lldp-rx: add VLAN ID parsing (#37725)
While the `port_vlan_id` field was already present in the
`sd_lldp_neighbor`, it wasn't currently parsed from the LLDP packet.
Added support for that as well as a small parsing test.

Closes #28354.
2025-06-06 19:12:48 +09:00
Yu Watanabe b1bfa60254 TODO: drop completed entry 2025-06-06 19:09:49 +09:00
Yu Watanabe 44875628ff systemctl: replace basename() with path_extract_filename() 2025-06-06 19:06:48 +09:00
Yu Watanabe 59829bb37a delta: rework how enumerate files 2025-06-06 19:06:48 +09:00
Yu Watanabe eefcf8de64 core: adding CGroup for io.systemd.Unit.List (second PR) (#37646)
This PR adds CGroup context/runtime for io.systemd.Unit.List method.

This is follow up for https://github.com/systemd/systemd/pull/37432.
2025-06-06 06:07:35 +09:00
Yu Watanabe 3b1850d906 Bugprone argument comment 10 (#37755)
Follow up from https://github.com/systemd/systemd/pull/37712
2025-06-06 06:07:05 +09:00
Yu Watanabe 23f9ff4724 ptyfwd: introduce pty_forward_set_window_title() helper function 2025-06-05 19:06:02 +09:00
Yu Watanabe 356e9bc018 test-network: extend comments how to run the test 2025-06-04 16:46:41 +01:00
Yu Watanabe b21483720c Several follow-ups for userdb lookup from udevd and networkd (#37719) 2025-06-04 23:32:24 +09:00
Yu Watanabe ca783b43b8 doc: tweaks to root storage daemon docs (#37727) 2025-06-04 22:34:28 +09:00
Yu Watanabe 6e47959685 Bugprone argument comment 9 (#37712)
Follow up from https://github.com/systemd/systemd/pull/37678
2025-06-04 22:33:51 +09:00
Yu Watanabe a4dae8e42f Revert "github/mkosi: tentatively disable mkosi(opensuse) job"
This reverts commit 48a092afbb.
2025-06-04 21:54:37 +09:00
Yu Watanabe d2b41bd69e TEST-17-UDEV: acquire SYS_UID_MAX/SYS_GID_MAX from userdbctl
Suse build systemd with -Dsystem-uid-max=499 -Dsystem-gid-max=499,
and seems to not provide /etc/login.defs file. See
https://github.com/bmwiedemann/openSUSE/blob/2dc224ae5d446e928519315f4d46f76d1e34b8a8/packages/s/systemd/systemd.spec
2025-06-04 21:54:32 +09:00
Yu Watanabe b24e4f34cc network: skip loading /etc/shadow
We only require UID/GID, hence not necessary to load information from shadow.
2025-06-04 21:50:12 +09:00
Yu Watanabe 8c57161d65 udev-rules: skip loading /etc/shadow
We only require UID/GID, hence not necessary to load information from shadow.
2025-06-04 21:50:12 +09:00
Yu Watanabe 937a355d6b userdb: make ENOEXEC wins over ESRCH
Both ENOEXEC and ESRCH is a kind of error that indicate successful
lookup. ENOEXEC means the server found an entry but it does not
pass filter. ESRCH means the server could not find an entry.
Hence, ENOEXEC should have more information, and should be propagated to
the caller.
2025-06-04 21:50:12 +09:00
Yu Watanabe 8bfcfa17fe userdb: use RET_GATHER() at one more place and update comment 2025-06-04 21:50:12 +09:00
Yu Watanabe bf4d6c3d51 userdb: fix definition of USERDB_SYNTHESIZE_NUMERIC
Otherwise, we always synthesize numeric IDs.

Follow-up for e4d07d1a2d.
2025-06-04 21:50:12 +09:00
Yu Watanabe e311402d4a meson: enable -Wgnu-variable-sized-type-not-at-end again
Follow-up for ab29e77aa9.

For gcc, flex-array-member-not-at-end was enabled by the commit,
but the option for clang with the same effect was still disabled.
Let's reenable it.

Prompted by #37497.
2025-06-04 13:13:14 +09:00
Yu Watanabe b525942037 man/pcrlock: fix typo
Follow-up for ccd2bf48b2.
2025-06-04 13:13:14 +09:00
Yu Watanabe fda47cd92b sd-dhcp: explicitly set buffer size of each type 2025-06-04 13:13:14 +09:00
Yu Watanabe dbef4dd4f2 sd-event: move flex array in struct inotify_data to the end 2025-06-04 13:13:14 +09:00
Yu Watanabe ddfe2afbd3 sd-journal: drop unnecessary use of dummy_t
Then, make flex arrays to zero-length arrays, as union cannot have
flex arrays, even though flex and zero-length arrays are effectively
equivalent.
2025-06-04 13:13:14 +09:00
Yu Watanabe 545814714c sd-journal: replace sizeof(ObjectHeader) with offsetof(ObjectHeader, payload)
Note, the preceding fields have size that is a multiple of 8 bytes,
so the end of `.size` is aligned, thus
`offsetof(ObjectHeader, payload) == sizeof(ObjectHeader)`.
2025-06-04 13:13:14 +09:00
Yu Watanabe 462d287bc9 sd-journal: variable sized array cannot be used in ObjectHeader
The struct ObjectHeader is embedded in real object structs.
Hence, the existence of the flex array in ObjectHeader violates the
requirement that flex array must be at the end of struct.
2025-06-04 13:13:14 +09:00
Yu Watanabe 813fcf2a8a core/varlink: use forward.h at two more places 2025-06-04 04:57:32 +09:00
Yu Watanabe add1bc28d3 bus-unit-util: warn and ignore assignment of deprecated properties
With 5da476ac77, we refused to set the
properties, but this relaxes the behavior, and now commands warn and
ignore the assignment.

Also, assignment of CPUAccounting property is now warned and ignored,
which is deprecated by 29da53dde3.

Prompted by https://github.com/systemd/systemd/pull/37665#discussion_r2115676993
2025-06-03 15:31:05 +02:00
Yu Watanabe cb109e00c4 repart: if partition already exists, required size may not be multiple of grain size
See partition_min_size_with_padding().
Fixes #37178.
2025-06-03 10:42:34 +02:00
Yu Watanabe a491eca403 Bugprone argument comment 8 (#37678)
Follow up from https://github.com/systemd/systemd/pull/37556
2025-06-03 10:58:52 +09:00
Yu Watanabe 0436240dd2 udevadm: allow to specify device by device ID (#37636) 2025-06-02 18:02:36 +09:00
Yu Watanabe 91c60ff528 bootctl: do not print slash more than once
When bootctl is called by an unprivileged user, then previously we got
```
Failed to read "/boot/EFI/systemd": Permission denied
Failed to open '/boot//loader/loader.conf': Permission denied
```
Now, with this patch, we get
```
Failed to read "/boot/EFI/systemd": Permission denied
Failed to open '/boot/loader/loader.conf': Permission denied
```
2025-05-31 13:53:04 +02:00
Yu Watanabe 3ec92f2f74 terminal-util: fix typo
Follow-up for 5321b957b4.
2025-05-31 04:44:34 +09:00
Yu Watanabe 8e9c003e29 core/cgroup: update comment
We do not have SetProperty() method, but SetProperties().
2025-05-31 04:15:04 +09:00
Yu Watanabe ab5587d674 core/transaction: restart dependency loop when a new dependency is added (#37465)
Fixes #36031.
2025-05-31 04:01:06 +09:00
Yu Watanabe e018cf0c67 TODO: drop entry about removal of unnecessary INTERFACE_OLD check in udevadm trigger
Done by fde9f2bc48.
2025-05-31 03:46:53 +09:00
Yu Watanabe 50e518a96a login: add several debugging logs about synthetic events 2025-05-29 11:41:25 +09:00
Yu Watanabe 392b9ab647 login: add device monitor instance to receive events for devices with uaccess tag
With c960ca2be1, logind triggers uevents
for devices with uaccess tag, and waits for the events being processed
by udevd.
However, logind received not all triggered events, and might lose some
events. That causes session and user state file not updated, and many
desktop environment application handled the session and user were inactive.

This introduces one more device monitor instance which monitor events
for devices with 'uaccess' tag. Hence, all triggered events will be
recieved by logind, and session and user state file will be updated.

Follow-up for c960ca2be1.
Fixes #37579.
2025-05-29 11:41:25 +09:00
Yu Watanabe 7824e70a07 test: add test case for issue #36031 2025-05-29 05:41:29 +09:00
Yu Watanabe b7777d0884 core: introduce Unit.dependency_generation counter and restart loop when dependency is updated in the loop
When starting unit A, a dependent unit B may be loaded if it is not
loaded yet, and the dependencies in unit A may be updated.
As Hashmap does not allow a new entry to be added in a loop, we need to
restart loop in such case.

Fixes a bug introduced by cda667722c.
Fixes #36031.
2025-05-29 05:41:25 +09:00
Yu Watanabe 9b6aa9e443 core/transaction: do not override unit load state when unit_load() failed
When unit_load() failed for some reasons, previously we overrided the
load state with UNIT_NOT_FOUND, but we did not update the
Unit.fragment_not_found_timestamp_hash. So, the unit may be loaded
multiple times when the unit is in a dependency list of another unit,
as manager_unit_cache_should_retry_load() will be true again even on
next call.
Let's not override the unit state set by unit_load().

Note, after unit_load(), the unit state should not be UNIT_STUB.
Let's also add the assertion about that.

This change is important when combined with the next commit, as with the
next commit we will restart the FOREACH_UNIT_DEPENDENCY() loop if an unit
is reloaded, hence overriding load state with UNIT_NOT_FOUND may cause
infinit loop.
2025-05-29 05:37:34 +09:00
Yu Watanabe 7ad2e66080 core/transaction: drop redundant call of bus_unit_validate_load_state()
The function manager_unit_cache_should_retry_load() reutrns true only
when the unit state is UNIT_NOT_FOUND. Hence, it is not necessary to
call bus_unit_validate_load_state() before checking
manager_unit_cache_should_retry_load().
2025-05-29 05:37:34 +09:00
Yu Watanabe fe51a61477 core/transaction: fix comment 2025-05-29 05:37:34 +09:00
Yu Watanabe fc49b2994d core/transaction: rename ret -> job 2025-05-29 05:37:34 +09:00
Yu Watanabe b90a47cb69 NEWS: mention that udevadm can take device IDs to specify devices 2025-05-29 04:04:22 +09:00
Yu Watanabe d0ba749e8c udevadm: allow to specify device by device ID
We have already exposed device ID in the output of device ID in J
fields. Also sd_device_get_device_id() and sd_device_new_from_device_id()
are already public. Hence, making udevadm accept device IDs may be
useful.

With this change, as we save several data in /run/udev with device ID,
we can call udevadm something like the following:
```
udevadm info $(ls /run/udev/tags/uaccess)
```
Then, we can show all devices that has uaccess tag.
2025-05-29 04:04:22 +09:00
Yu Watanabe 337f45d811 udevadm-info: use RET_GATHER() at one more place 2025-05-29 04:04:22 +09:00