Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe f24f70343d network: log_link_message_debug_errno() automatically append %m if necessary
Follow-up for d28746ef55.
Fixes CID#1609753.
2025-05-08 05:57:48 +09:00
Yu Watanabe ecad362d7e man: fix typo
Follow-up for a50fa2a40f.
2025-05-08 03:37:38 +09:00
Yu Watanabe 8449d38d6f boot: Add EDID (#36843)
This adds a couple of custom CHIDs which include panel manufacturer and
product code.
2025-05-08 02:48:00 +09:00
Yu Watanabe 676fb42aae units: enable IgnoreOnIsolate=yes on systemd-udevd-kernel.socket
Otherwise, initrd-cleanup.service requests isolation thus the socket
is stopped before switching root, and several early events after
switching root may be lost.
2025-05-08 01:29:53 +09:00
Yu Watanabe 2e72d3efaf Reduce the number of transitive includes (#37364) 2025-05-07 22:58:09 +09:00
Yu Watanabe 88db1efac9 Reword descriptions of RestrictAddressFamilies= and SystemCallFilter= (#37367) 2025-05-07 15:34:25 +09:00
Yu Watanabe dde0ed6335 core/service: minor cleanups (#37362)
Split out from #37071
2025-05-07 02:09:19 +09:00
Yu Watanabe 13e4201dc9 Bugprone argument comments - round 3 (#37356)
Follow up from https://github.com/systemd/systemd/pull/37346
2025-05-07 01:38:34 +09:00
Yu Watanabe 8d7f05abc8 cleanup: bugprone argument issues (#37346)
Follow up from https://github.com/systemd/systemd/pull/37281
2025-05-06 18:56:07 +09:00
Yu Watanabe d3059d48ee hibernate-resume: automatically decrypt dissected swap (#37335)
Closes https://github.com/systemd/systemd/issues/27247
(https://github.com/systemd/systemd/pull/35328,
https://github.com/systemd/systemd/issues/37330)
2025-05-06 13:00:24 +09:00
Yu Watanabe 2482bd49c3 network,udev: several improvements for logging (#37337)
No functional changes. Continuation of #37269.
2025-05-06 12:43:15 +09:00
Yu Watanabe a3a98a3793 prioq: coding style fixes 2025-05-05 22:53:01 +02:00
Yu Watanabe 11c5eff1cb udev/net: update log message 2025-05-05 22:07:04 +09:00
Yu Watanabe f4282e6a06 udev/net: mention which SR-IOV setting could not be applied in log message 2025-05-05 22:07:04 +09:00
Yu Watanabe fed4da3a19 network/sriov: mention which setting could not be applied in log message 2025-05-05 22:07:04 +09:00
Yu Watanabe d28746ef55 network: make log_link_message_full_errno() take format string 2025-05-05 22:07:04 +09:00
Yu Watanabe 3d026764f1 network/nexthop: split out nexthop_to_string() 2025-05-05 22:07:00 +09:00
Yu Watanabe c6f53cde20 network/route: split out route_to_string() from log_route_debug() 2025-05-05 22:06:19 +09:00
Yu Watanabe a6619f9678 Vmspawn fixes (#37320)
Fixes
https://github.com/systemd/systemd/pull/36618#issuecomment-2844694845

and 

```
qemu-kvm: -device vmgenid,guid=5f303a47-6fae-4dd7-969c-6c1ea61e816e: 'vmgenid' is not a valid device model name
```
2025-05-04 12:24:04 +09:00
Yu Watanabe 58096d7338 various: convert more readers of /proc/ to plain read_full_file() (#37299)
Continuation of #36734

Apparently I was wrong about everything under `/proc/` being seq_file,
but at least there're some more to convert and we can leverage our
helper func while doing so.
2025-05-01 15:28:34 +09:00
Yu Watanabe 366dd4a662 wait-online: handle varlink connection errors while waiting for DNS (#37283)
Currently, if systemd-networkd-wait-online is started with --dns, and
systemd-resolved is not running, it will exit with an error right away.
Similarly, if systemd-resolved is restarted while waiting for DNS
configuration, systemd-networkd-wait-online will not attempt to
re-connect, and will potentially never see subsequent DNS
configurations.

Improve this by adding socket units for the systemd-resolved varlink
servers, and re-establish the connection in systemd-networkd-wait-online
when we receive `SD_VARLINK_ERROR_DISCONNECTED`.
2025-05-01 01:55:04 +09:00
Yu Watanabe da9d75e0c6 TEST-17: drop unnecessary $PATH setting
My local setting was unintentionally inserted by the commit
7cb4508c5a.
2025-05-01 00:27:51 +09:00
Yu Watanabe 9142bd5a8e network/ndisc: drop only default gateway via the host when a neighbor announcement without router flag is received
A host can send Router Advertisements (RAs) without acting as a router.
In such cases, the lifetime of the RA header should be zero, but may
contain several options, and clients can configure addresses, routes,
and so on with the message. The host may (should?) send Neighbor
Announcements (NAs) without the router flag in that case.

So, when a NA without the router flag is received, let's not drop
configurations based on the previous RA options, but only drop the
default gateway configured based on the RA header.

See RFC 4861 Neighbor Discovery in IPv6, section 6.3.4:
https://www.rfc-editor.org/rfc/rfc4861#section-6.3.4:~:text=%2D%20The%20IsRouter%20flag,as%20a%20host.
> - The IsRouter flag in the cache entry MUST be set based on the Router
>   flag in the received advertisement. In those cases where the IsRouter
>   flag changes from TRUE to FALSE as a result of this update, the node
>   MUST remove that router from the Default Router List and update the
>   Destination Cache entries for all destinations using that neighbor as
>   a router as specified in Section 7.3.3. This is needed to detect when
>   a node that is used as a router stops forwarding packets due to being
>   configured as a host.

Fixes a regression caused by 87a33c0740 (v256).
Fixes #37198.
2025-04-30 22:17:03 +09:00
Yu Watanabe ad6563c766 sd-bus,busctl: introduce sd_bus_message_dump_json() and use it (#37266) 2025-04-30 22:16:14 +09:00
Yu Watanabe e95aebef1f network,udev: several fixlets for setting up SR-IOV VFs (#37269)
Closes #37257 and #37275.
2025-04-30 22:14:41 +09:00
Yu Watanabe 8305cd5640 network/tuntap: verify User=/Group= earlier and refuse non-system users/groups (#37294)
Similar to #36123.
Closes #37279.
2025-04-30 22:12:56 +09:00
Yu Watanabe 940441b44c network/tuntap: deny non-system users/groups from owning Tun/Tap interfaces
This is analogous to #36123, but for Tun/Tap interfaces created by
systemd-networkd.

If a regular user account want to control a Tun/Tap interface, then
assign the interface to a system group, e.g., vpn, and add the user
to the group.

Closes #37279.
2025-04-30 20:31:00 +09:00
Yu Watanabe 1fae13fbec network/tuntap: verify User=/Group= settings earlier
and ignore the settings if we cannot find the specified user/group.

This also replaces get_user_creds()/get_group_creds() with
userdb_by_name()/groupdb_by_name().
2025-04-30 20:30:34 +09:00
Yu Watanabe 7aef80e0bd sd-bus/bus-dump,busctl: downgrade log level in sd_bus_message_dump(), and log in the caller side 2025-04-30 19:40:39 +09:00
Yu Watanabe 46fcdc3d73 sd-bus/bus-dump: several coding style cleanups 2025-04-30 19:40:39 +09:00
Yu Watanabe 3e45c68aba busctl: split out bus_message_dump()
No functional change, just refactoring.
2025-04-30 19:40:39 +09:00
Yu Watanabe 0c111392fd sd-bus: introduce sd_bus_message_dump_json()
We have already expose sd_bus_message_dump(). Let's also expose how
we convert dbus message into json format in busctl.
2025-04-30 19:40:37 +09:00
Yu Watanabe 371005ac98 network,udev: configure SR-IOV VF attribute one-by-one
When a [SR-IOV] section has no setting, e.g.
```ini
[SR-IOV]
VirtualFunction=0
```
then the kernel previously replied -EINVAL, as we send a rtnl message
with an empty IFLA_VF_INFO container.
See See do_setvfinfo() in net/core/rtnetlink.c of the kernel.

When a [SR-IOV] section that has an unsupported settings by the
interface driver, then previously the kernel partially applied
settings and returned -EOPNOTSUPP. E.f.
```ini
[SR-IOV]
VirtualFunction=0
LinkState=auto
Trust=true
MACAddress=02:01:00:3e:61:34
```
and the interface does not support configuring the link state, then
the MAC address is assigned, but the trust is not applied:
```
enp3s0f0: Failed to configure SR-IOV virtual function 0, ignoring: Operation not supported
    vf 0     link/ether 02:01:00:3e:61:34 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
```

To fix such issues, this makes networkd/udevd send each attribute
for VF one-by-one.

Fixes #37257 and #37275.
2025-04-30 15:47:19 +09:00
Yu Watanabe c8b3f1d47d netif-sriov: align table 2025-04-30 15:47:19 +09:00
Yu Watanabe 9cb6017e6f network,udev: reword log messages in setting SR-IOV VFs 2025-04-30 15:47:19 +09:00
Yu Watanabe 45114e3999 network: ignore error in configuring SR-IOV VFs
The configuration can easily fail when the target virtual function
does not exist, and there is nothing networkd can do in such case.
Also, it is overkill to make the physical interface entered to the
failed state in such case. Let's warn but ignore the failure.
2025-04-30 15:47:19 +09:00
Yu Watanabe 0dc09ccba7 linux: include sys/socket.h in linux/vm_sockets.h
The header requires struct sockaddr declared. So, otherwise, we need to
include sys/socket.h earlier than linux/vm_sockets.h.
Let's make the header includable at any place.
2025-04-30 07:37:34 +02:00
Yu Watanabe 3a03b97d6f tree-wide: drop unnecessary inclusion of tmpfile-util.h 2025-04-30 05:38:48 +09:00
Yu Watanabe bd4ab24f49 basic/include/linux: update kernel headers from v6.15-rc4 2025-04-29 21:58:25 +09:00
Yu Watanabe 531cf425e8 man/busctl: many other commands can take --json=/-j
Also, in a futre remaining commands may also support the option.
Let's not mention which command support the options.

Closes #37210.
2025-04-27 10:41:34 +09:00
Yu Watanabe 4db8663b81 tree-wide: fix typo 2025-04-27 10:36:12 +09:00
Yu Watanabe 905a89a219 udev: readjust priorities of event sources
Follow-up for 511619087b.

Notable changes are
- SIGTERM is the highest among others, to make not udevd queue too
  many events, as we need to serialize them anyway.
- device monitor has the second highest priority, to make 'remove'
  uevents received earlier than IN_IGNORED inotify events. Otherwise,
  after IN_IGNORED is received, if there is no queued event,
  /run/udev/queue file will be removed by the post-event source of the
  inotify event, and 'udevadm settle' or friends may wrongly finish,
  even we will soon queue 'remove' uevents for the device.
  This change should fix the recent instability of TEST-64-UDEV-STORAGE.

For other changes, see the comments in the code.
2025-04-27 09:47:07 +09:00
Yu Watanabe 5de236bd07 udev: do not remove /run/udev/queue file when we are synthesizing events
Note, it should be safe even if we synthesize no event, e.g. when the
device has been already removed. In such case, the post event after
SIGCHLD will remove the file.
2025-04-27 09:47:07 +09:00
Yu Watanabe 17b43e213b udev: try again to create /run/udev/queue when queueing the next event
This is mostly a paranoia, but if we failed to create /run/udev/queue
for some reasons on queueing an event, previously we would never create
the file until once the queue became empty. This makes in such case we
try to create the file again when queueing the next event.
2025-04-27 09:45:39 +09:00
Yu Watanabe b09f351bd7 networkd: reduce the default IPv4 DAD (ACD) timeout and make it configurable (#37138)
RFC 5227 specifies randomized intervals to avoid that a large number of
hosts powered up at the same time send their message simultaneously.
Performing the conflict detection takes a variable time between 4 and 7
seconds from the beginning to the first announcement, as shown by the
following diagram where P indicates a probe and A an announcement:

```
     time(s)     0   1   2   3   4   5   6   7   8   9
                 +---+---+---+---+---+---+---+---+---+
     SHORTEST    P   P   P       A       A
     LONGEST         P       P       P       A       A
```

The host can't use the address until the first announcement is sent. 7
seconds is a very long time on modern computers especially considering
the fact that the round-trip time on current LAN technologies is at most
few milliseconds. Section 2.2 of the RFC addresses this matter and hints
that a future standard will adjust those timeouts; however that standard
doesn't exist yet.

Make the timeout configurable via a new
"IPv4DuplicateAddressDetectionTimeoutSec=" option. The intervals defined
in the RFC are then scaled proportionally so that the duration of the
conflict detection takes at most the given value. Interval happening
after the first announcement are not scaled, as recommended by the RFC.

Also reduce the default value from 7s to 200ms, which is a more suitable
value for today's technology.
2025-04-26 16:19:33 +09:00
Yu Watanabe 9d902ed4cc journal-file: fix meaning less assertion
Closes CID#1609495.
2025-04-26 09:37:18 +09:00
Yu Watanabe f96867edde format-table: add _TABLE_ERSATZ_INVALID to follow our usual coding style
Closes CID#1609497.
2025-04-26 09:32:23 +09:00
Yu Watanabe d6891af577 core/device: fix meaningless assertion
Closes CID#1609498.
2025-04-26 09:29:43 +09:00
Yu Watanabe 497b7a30a9 Several cleanups for reading IP address from DBus message (#37230) 2025-04-25 06:07:18 +09:00
Yu Watanabe 90e799de1f sd-json: fix conditions
Fixes a bug in 6647bbeab1 (v257).

Fixes CID#1609496.
2025-04-25 06:06:38 +09:00
Yu Watanabe 10594762c7 Remove unused code and fix one bug (#37225) 2025-04-24 12:28:48 +09:00
Yu Watanabe 264749453c core/dbus-cgroup: use bus_message_read_in_addr_auto() at one more place 2025-04-24 10:11:07 +09:00
Yu Watanabe 06a5d24d78 resolvectl: skip reading remaining elements when an invalid address is specified
Previous code assumed that both family and address are read when
-EINVAL, hence the following read of port and name could succeed.

Let's drop the assumption, and skip reading remaining elements.

No functional change, just refactoring and preparation for later change.
2025-04-24 10:11:07 +09:00
Yu Watanabe 90293a9583 resolvectl: make three booleans for read_dns_server_one() into one enum 2025-04-24 10:11:07 +09:00
Yu Watanabe a31777df99 udev: support soft-reboot (#37222) 2025-04-24 09:31:56 +09:00
Yu Watanabe b7591658f0 man,network: fix typo
Follow-up for a06e884264.
2025-04-23 13:42:12 +09:00
Yu Watanabe 28659e1eac TEST-82-SOFTREBOOT: add test case for uevents generated during soft-reboot 2025-04-23 10:48:51 +09:00
Yu Watanabe 0d1819e791 units: stop systemd-udevd before soft-reboot
Otherwise, queued uevents may be lost on soft-reboot.

Similar to f89985ca49, but for
systemd-udevd.
2025-04-23 10:48:51 +09:00
Yu Watanabe b50f6dbe57 core/socket: do not enter failed state when we cannot start service due to conflicting transaction being queued
Otherwise, e.g. on soft-reboot, socket unit may enter the failed state
and the socket buffer will be cleared.
2025-04-23 10:48:51 +09:00
Yu Watanabe cda045882e network: enable ARP when IPv4LL and/or IPv4ACD is enabled (#37190) 2025-04-23 08:53:49 +09:00
Yu Watanabe 1393c5a2a4 sd-device: fix sysname check in sd_device_new_from_subsystem_sysname()
For example, consider the following device:
- syspath: /sys/bus/mdio_bus/drivers/Qualcomm Atheros AR8031!AR8033
- subsystem: "drivers"
- driver subsystem: "mdio_bus"
- sysname: "Qualcomm Atheros AR8031/AR8033"  <-- '!' is replaced with '/'

When sd_device_new_from_subsystem_sysname() is called to get the device,
the arguments to sd_device_new_from_subsystem_sysname() should be
- subsystem: "drivers"
- sysname (concatenated with driver subsystem): "mdio_bus:Qualcomm Atheros AR8031/AR8033"

In that case, we need to pass to device_new_from_path_join() the following:
- subsystem: "drivers"
- driver subsystem: "mdio_bus"
- sysname: "Qualcomm Atheros AR8031/AR8033"
- a: "/sys/bus"
- b: "drivers"
- c: "mdio_bus"
- d: "Qualcomm Atheros AR8031!AR8033"
Here, the important point is that the `sysname` argument and the
last argument `d` are differnt: the `sysname` argument needs to match
the sysname obtained by `sd_device_get_sysname()`, but `d` must be
the last path component of the syspath.

Previously, we passed a wrong sysname to device_new_from_path_join().
This fixes the issue.

Fixes a bug in cd7c71154c (v257).
2025-04-23 08:52:29 +09:00
Yu Watanabe f35a48bd57 mkosi: Add extra packages to the tools tree (#37218) 2025-04-23 08:51:44 +09:00
Yu Watanabe 87541e254f meson: use deprecated tag for dns-over-tls and cryptolib meson options
Follow-up for #36937.
2025-04-22 10:10:53 +02:00
Yu Watanabe b4d5115264 test-specifier: replace /dev/initctl with /dev/fd
To make the test work even when systemd is built without SysV compat.
2025-04-22 10:24:42 +09:00
Yu Watanabe 33f90ddefd test: drop nonexistent units from test-unit-name
The test does not request each unit file exists, but keeping legacy unit
names in test sounds spurious. Let's remove them. Hopefully we still
have enough test cases.
2025-04-22 10:24:42 +09:00
Yu Watanabe 97b2e136eb man/systemd: drop explanation about SysV compatibilities
Sooner or later, we will drop the explained SysV compatibilities.
Let's remove them from the man page now to make not people rely on that.
2025-04-22 10:24:42 +09:00
Yu Watanabe 70fd998c40 man/systemd: fix mapping from SysV runlevel to actual target name
See runlevel_to_target() in src/shared/unit-file.c.
2025-04-22 10:24:42 +09:00
Yu Watanabe ca7c4d4d89 unit-file: use STRV_FOREACH_PAIR() macro at one more place 2025-04-22 10:24:42 +09:00
Yu Watanabe f7586abfe0 man/systemctl: list-sockets command sorts the result
This updates the example output of list-sockets command.
2025-04-22 10:24:42 +09:00
Yu Watanabe efe0fe43a8 core: kill StartAuxiliaryScope() DBus method (#37184)
This removes StartAuxiliaryScope() DBus method as already planned and
announced.
This effectively reverts #28836.
2025-04-22 10:18:06 +09:00
Yu Watanabe a0e078e785 NEWS: mention org.freedesktop.systemd1.StartAuxiliaryScope() has been removed 2025-04-22 09:02:48 +09:00
Yu Watanabe 8c35e8a9d2 core: remove deprecated StartAuxiliaryScope() DBus method
The method is deprecated since 64f173324e
(v257) and announced that it will be removed in v258.
Let's remove it now.

This effectively reverts 84c01612de.
2025-04-22 09:02:45 +09:00
Yu Watanabe acd65ba1cd Revert "tests: add test for StartAuxiliaryScope()"
This reverts commit fd7fd59b6d.

The DBus method StartAuxiliaryScope() will be removed in the next
commit.
2025-04-22 09:00:19 +09:00
Yu Watanabe f62465b870 cgroup-util: drop cg_freezer_supported() and cg_ns_supported() (#37201) 2025-04-22 08:58:52 +09:00
Yu Watanabe 7137e0bf24 ssh-proxy: use % as an alternative separator
Since OpenSSH 10.0p1, specifically
https://anongit.mindrot.org/openssh.git/commit/?id=487cf4c18c123b66c1f3f733398cd37e6b2ab6ab
ssh refuses comma in hostname by default.

Let's use % as an alternative separator.

Follow-up for defd5060d6.
2025-04-20 15:15:54 +02:00
Yu Watanabe a06e884264 network: enable ARP= when IPv4LL/IPv4ACD is enabled
We can run sd-ipv4ll/sd-ipv4acd also on an interface with IFF_NOARP
flag, but that may cause address conflict with other hosts.
Let's enable ARPing when sd-ipv4ll/sd-ipv4acd are enabled unless ARP= is
explicitly disabled.
2025-04-20 10:49:15 +09:00
Yu Watanabe b5c83cd5a7 network/ipv4ll: introduce ipv4ll_start() helper function
No effective functional change. Just refactoring.
2025-04-20 10:48:52 +09:00
Yu Watanabe 07021ed4f5 network/link: move logging 2025-04-20 09:46:29 +09:00
Yu Watanabe 6f9d8b685d Add two new paragraphs to coding style about header files (#37188) 2025-04-19 20:46:02 +09:00
Yu Watanabe e895a490b7 NEWS: mention that F20 and friends has been replaced with micmute and so on
Follow-up for #34325.
2025-04-19 05:30:32 +09:00
Yu Watanabe cdf3339c56 bootctl: fix typo
Follow-up for bbeeea4362.
2025-04-19 04:49:29 +09:00
Yu Watanabe a4f003bac0 TEST-17-UDEV: add test case for queued events serialization/deserialization 2025-04-19 01:51:59 +09:00
Yu Watanabe 95e78b5e53 udev: serialize queued events on exit, and deserialize them in the next invocation
To make systemd-udevd not lose received uevents on restart. This may be
important on switching root, even though we typically trigger all devices
after switching root by systemd-udev-trigger.service, but it may be
disabled or modified by admin.
2025-04-19 01:51:50 +09:00
Yu Watanabe 2a6ca54154 hashmap: kill hashmap_free_with_destructor() and friends (#37111)
Now destructor is always set in hash_ops when necessary. Hence,
hashmap_free_with_destructor() and friends are not necessary anymore.
Let's kill them.
2025-04-18 17:40:51 +09:00
Yu Watanabe 39dd06dbc4 meson: build tests for nspawn even -Dnspawn= is disabled
Follow-up for d95818f522.
Fixes #36880.
2025-04-18 09:03:33 +02:00
Yu Watanabe 8e7ef6abb8 NEWS: mention integration-tests meson option is deprecated
Follow-up for 710653d3bc.
2025-04-18 09:36:29 +09:00
Yu Watanabe bdf4f200fd network: update comment as hashmap_free_with_destructor() does not exist anymore 2025-04-18 09:16:44 +09:00
Yu Watanabe 4cbc25ab4c hashmap: drop hashmap_free_with_destructor() and friends 2025-04-18 09:16:44 +09:00
Yu Watanabe 885001ed5d hashmap: drop unused free func arguments in hashmap_free() and hashmap_clear() 2025-04-18 09:16:44 +09:00
Yu Watanabe 2d4c4d9e10 set: drop unused set_free_free() 2025-04-18 09:16:44 +09:00
Yu Watanabe 828513ee3e test: make the copied set not take the ownership of elements 2025-04-18 09:16:44 +09:00
Yu Watanabe b0a2d49b61 test: use string_hash_ops_free 2025-04-18 09:16:44 +09:00
Yu Watanabe f6a2a9ba93 daemon-util: remove existing fds with the same name from fdstore
Currently, all use cases of notify_push_fd()/notify_push_fdf()
assume that the name of each fd in the fdstore is unique.
For safety, let's remove the existing fds before pushing a new one
to avoid multiple fds with the same name stored in the fdstore.
2025-04-18 09:12:43 +09:00
Yu Watanabe 1785961660 udev: re-add unintentionally dropped error log
Follow-up for 9b6bf4e10e.
2025-04-18 09:06:09 +09:00
Yu Watanabe 7baf24c949 network/manager: hash_ops related cleanups (#37121) 2025-04-18 06:00:15 +09:00
Yu Watanabe ce921df8d1 network/network: hash_ops related cleanups (#37120) 2025-04-18 05:59:47 +09:00
Yu Watanabe c96a5d9912 misc: hash_ops related cleanups (#37117) 2025-04-18 05:59:15 +09:00
Yu Watanabe 6858c1fd8b libudev: several trivial cleanups (#37106) 2025-04-18 05:58:41 +09:00
Yu Watanabe bf478dcffb sd-netlink: prepare buffer for dropping unexpected message
Follow-up for c7460cce79 (v219).

Fixes #35654.
2025-04-17 01:52:17 +01:00
Yu Watanabe 76cb6f535e network/netdev: hash_ops related cleanups (#37119) 2025-04-17 03:22:36 +09:00