Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe ee3cbfdbbc test-network: rewrite wait-online address family tests
Fixes #25154.
2022-10-28 12:26:52 +02:00
Yu Watanabe 2ffb134e78 network: drop duplicated period in log message 2022-10-28 11:16:21 +02:00
Yu Watanabe b4f4f1191e test-network: show only IPv4 routes 2022-10-28 11:35:28 +09:00
Yu Watanabe 7db98bc938 network: make RouteTable= also accept route table name 2022-10-28 11:35:17 +09:00
Yu Watanabe 513bed294e network: allow 0 for table number
Fixes #25089.
2022-10-28 11:33:22 +09:00
Yu Watanabe 29de4f7304 network: Table= also accepts table name 2022-10-28 11:03:52 +09:00
Yu Watanabe 97693cb358 Merge pull request #25163 from weblate/weblate-systemd-master
Translations update from Fedora Weblate
2022-10-28 08:27:39 +09:00
Yu Watanabe 6fadf01cf3 wait-online: ignore -ENODATA from sd_network_link_get_required_for_online()
Follow-up for 778e3da95e.

These settings are saved only when a .network file is assigned to the
interface. Let's silence noisy logs for unmanaged interfaces.
2022-10-27 11:08:38 +02:00
Yu Watanabe 403ca5b8b4 unit: also prioritize input devices when triggering devices
As in most cases, tty device without input devices is meaningless.

This also swaps the priority of tty and net:
- input devices are often connected under USB bus, hence may take
  slightly much time to be initialized. As, described in the above,
  in most cases it is allowed that tty devices are initialized just
  before input devices,
- network configuration usually requires much time, e.g. DHCP or RA,
  hence it is better that network interfaces initialized. Then,
  network services can start DHCP client or friends earlier.

Fixes #24026.
2022-10-26 10:49:09 +02:00
Yu Watanabe 5e577da5f8 hwdb: drop model specifier from general entries
Fixes #25029.
2022-10-26 12:58:13 +09:00
Yu Watanabe 389954987a sd-device: make device_shallow_clone() static 2022-10-26 05:12:54 +09:00
Yu Watanabe 53354d370e sd-device: drop unused device_copy_properties() 2022-10-26 05:05:30 +09:00
Yu Watanabe a505d7e7f8 Merge pull request #25133 from poettering/ddi-dissect
mention "DDIs" in systemd-dissect tool --help text/man page
2022-10-26 03:37:44 +09:00
Yu Watanabe bcf04e9b27 tree-wide: fix typo 2022-10-26 03:24:45 +09:00
Yu Watanabe d0f69be793 Merge pull request #25131 from poettering/image-root-help-text-fix
analyze/coredumpctl: add --image=/--root= to --help texts
2022-10-26 03:17:17 +09:00
Yu Watanabe 9918dfb98b test: rewrite tests for renaming network interface
- use `udevadm wait` instead of `udevadm info --wait-initialized`,
- use `timeout` command instead of the fixed time sleep,
- add basic tests for #25106,
- add brief comment about #25115.
2022-10-26 01:47:18 +09:00
Yu Watanabe 4117366a28 btrfs-util: move btrfs_defrag_fd() from fd-util.[ch]
After d71ece3f0b, the function is not used
in libbasic or libsystemd anymore. Let's move it to more appropriate
place.
2022-10-25 16:25:46 +09:00
Yu Watanabe 8cf144c3f6 Merge pull request #25052 from yuwata/resolvconf-compat
resolvconf-compat: first try to use the specified interface name as is
2022-10-25 04:08:41 +09:00
Yu Watanabe 8207ec4b49 Merge pull request #25080 from keszybz/search-paths
Refusing linking files underneath our hierarchy, improve error messages
2022-10-25 01:57:41 +09:00
Yu Watanabe 72ca42c1b4 test: add tests for setting DNS servers by resolvectl or resolvconf 2022-10-25 01:52:16 +09:00
Yu Watanabe 7d4e850323 resolvconf-compat: first parse provided interface name as is
Then, try to drop multiple protocol specifiers at the end.

Strictly speaking, this breaks backward compatibility:
if eth0 and eth0.42 exists, then previously,
    echo 'nameserver 192.168.0.1' | resolvconf -a eth0.42
adds the DNS server to eth0 instead of eth0.42, as we unconditionally
dropped the specifier after the last dot, and
    echo 'nameserver 192.168.0.1' | resolvconf -a eth0.42.dhcp
adds the DNS server to eth0.42. However, with this commit, now
the both commands add the DNS server to eth0.42. But, hopefully,
this should be preferable behavior.

Fixes #25032.
2022-10-24 20:34:10 +09:00
Yu Watanabe 427eeb44f2 resolvectl: rely on invoked_as() 2022-10-24 18:55:53 +09:00
Yu Watanabe a56dd1580d string-util: make free_and_strdup_warn() return 1 when new string is assigned 2022-10-24 18:55:11 +09:00
Yu Watanabe 5905bddce2 systemctl: fix potential memleak on failure in determine_default()
And make verb_set_default() return zero on success.
2022-10-24 18:55:11 +09:00
Yu Watanabe 82c5487894 test: skip one test for iszero_safe() on i386 without SSE2
We do not provide any numerical libraries, and iszero_safe() is only
used in parsing or formatting JSON. Hence, it is not necessary for us to
request that the function provides the same result on different systems.

Fixes #25044.
2022-10-19 00:09:44 +02:00
Yu Watanabe 17bf3c550d tree-wide: set description for device manager 2022-10-19 04:46:24 +09:00
Yu Watanabe 9b784d7c16 udev: drop redundant description setting
Follow-up for f714ecd450.
2022-10-19 04:45:31 +09:00
Yu Watanabe 69363f13b5 test: add test for large uevent message 2022-10-17 21:52:35 +09:00
Yu Watanabe efbd4b3ca8 sd-device-monitor: dynamically allocate receive buffer
If udevd broadcasts a processed device with huge amount of properties,
then clients cannot receive the device.

Fixes #24987.
2022-10-17 21:49:08 +09:00
Yu Watanabe 3e15bed410 udev: drop unused source file
Follow-up for 5bbcfbaa11.
2022-10-15 20:41:23 +09:00
Yu Watanabe f6e88aac2c elf-util: drop assertion for metadata in report_module_metadata()
Fixes a bug introduced by 1a0281a3eb.

Fixes RHBZ#2134741 (https://bugzilla.redhat.com/show_bug.cgi?id=2134741).
2022-10-14 18:08:11 +02:00
Yu Watanabe 2ce39d78b8 udev-builtin-kmod: support to run without arguments
If no module name is provided, then try to load modules based on the
device modealias.

Previously, MODALIAS property is passed as an argument, but it may
contain quotation. Hence, unfortunately the modalias may be modified
and cannot load expected modules.

Fixes #24715.
2022-10-14 21:32:24 +09:00
Yu Watanabe 52bcf45a6c sd-journal: use new() instead of newa() if too many items will be added
For safety, as the size may not be under our control.
2022-10-14 01:30:30 +09:00
Yu Watanabe 80c5cb825a Merge pull request #24985 from yuwata/codeql
test: several cleanups suggested by CodeQL
2022-10-13 21:36:16 +09:00
Yu Watanabe 74522aa87f test: introduce __eq__() and __ne__()
Suggested by CodeQL#160 (https://github.com/systemd/systemd/security/code-scanning/160).
2022-10-13 17:41:48 +09:00
Yu Watanabe f9d1709c03 test: drop unused modules
Suggested by CodeQL#167 (https://github.com/systemd/systemd/security/code-scanning/167)
and CodeQL#168 (https://github.com/systemd/systemd/security/code-scanning/168).
2022-10-13 17:34:11 +09:00
Yu Watanabe 5c27347693 test: improve assertion message on failure
Suggested by CodeQL#169 (https://github.com/systemd/systemd/security/code-scanning/169).
2022-10-13 17:33:09 +09:00
Yu Watanabe 7ff7eadf42 TODO: fix typo 2022-10-13 17:15:50 +09:00
Yu Watanabe 17f6406bf2 Merge pull request #24625 from yuwata/dissect-image-open-and-lock-decrypted
dissect-image: open dissected and decrypted partitions
2022-10-13 07:47:08 +09:00
Yu Watanabe d2c6e79d89 dissect-image: introduce probe_filesystem_full() which can take file descriptor of device node
In dissect_loop_device(), we have opened the device node. Let's reuse
the file descriptor.
2022-10-13 05:09:27 +09:00
Yu Watanabe f7725647bb dissect-image: open dissected or decrypted partitions and mount through the file descriptor
If multiple services with the same encrypted image are simultaneously
starting, one may deactivate the dm device while others using it.
Or, similary, after (regular) partitions are dissected, another process
may try to remove them before we mount them.

To prevent such situations, let's keep the dissected and decrypted
partitions opened. Then, use the file descriptors when we mount the
partitions.

Fixes #24617.
2022-10-13 05:09:26 +09:00
Yu Watanabe f80015ff40 dissect-image: try to open device node before activating
Hopefully decrease the chance that the device is removed soon after
it is detected.
2022-10-13 05:08:33 +09:00
Yu Watanabe 12f5fbdf30 dissect-image: fix error handling of @cancel_deferred_remove DM command
See target_message() in drivers/md/dm-ioctl.c and
dm_cancel_deferred_remove() in drivers/md/dm.c.
2022-10-13 05:08:33 +09:00
Yu Watanabe 1d369d78b3 dissect-image: reduce indentation
No functional change, just refactoring.
2022-10-13 05:08:33 +09:00
Yu Watanabe 6c65a9e1d6 Merge pull request #24973 from keszybz/simplify-variable-declarations
Simplify variable declarations
2022-10-12 19:36:47 +09:00
Yu Watanabe df04b9ed86 sd-journal: add comments that journal_file_move_to() may break previous read data
We have already made similar mistakes several times, e.g.
b8478c14c7, and
b596d06c385e104fc330288b791a56661f0c2d17. Let's document the function
invalidates previously read objects.
2022-10-12 19:32:59 +09:00
Yu Watanabe a1640191b4 sd-journal: re-read object on next try
Otherwise, the object may be already altered by another cached entry.
2022-10-12 19:32:59 +09:00
Yu Watanabe 231741d355 sd-journal: re-read object from cache
Fixes a bug introduced by 0e35afff1d.

Replaces 3388a4b582.
2022-10-12 19:32:59 +09:00
Yu Watanabe 8f71023764 sd-journal: drop unused argument
Follow-up for a9089a6604.
2022-10-12 19:32:59 +09:00
Yu Watanabe cc938e4a0a sd-journal: several coding style updates
- rename `ret` -> `ret_object`,
- add missing assertions,
- add FIXME comments,
- wrap function arguments, etc., etc..
2022-10-12 19:32:59 +09:00
Yu Watanabe 8a77f21d29 sd-journal: rename next_hash_offset() -> get_next_hash_offset()
As the function name conflicts with one of its argument.
2022-10-12 15:37:04 +09:00
Yu Watanabe c21e114004 Revert "test-journal-flush: Don't fail on EADDRNOTAVAIL"
This reverts commit 3388a4b582.

The error EADDRNOTAVAIL in the test only comes from journal_file_move_to(),
and it does not mean the corrupted journal, but pure programming error.
2022-10-12 14:47:37 +09:00
Yu Watanabe abb977a61a sd-radv: mention that failures in sending RA are ignored 2022-10-11 16:22:35 +09:00
Yu Watanabe 852bf93826 sd-ndisc: ignore failure in sending solicitation
Even if a bonding master interface has carrier, the underlying slave
interfaces may not. In such a case, sending solicitation fails with
-ENOBUS. Here, let's unconditionally ignore errors, as anyway we will
send a solicitation later.

Fixes #24717.
2022-10-11 16:19:16 +09:00
Yu Watanabe f4a4493eb5 udev: add one more assertion
Follow-up for 6209bbbd4b.
2022-10-11 00:17:20 +02:00
Yu Watanabe 2164ccdaa2 Merge pull request #24654 from fbuihuu/mount_followup_for_pr_19983
Mount followup for pr 23367
2022-10-10 19:13:22 +09:00
Yu Watanabe 6209bbbd4b udev: drop assertion which is always false
Fixes a bug introduced by 67c3e1f63a.

Fixes #24945.
2022-10-10 10:26:38 +02:00
Yu Watanabe ae24e4e80e TODO: fix typo 2022-10-08 15:09:53 +09:00
Yu Watanabe 766c1eae8e NEWS: fix typo 2022-10-08 15:09:47 +09:00
Yu Watanabe 4a874ecea5 NEWS: drop reverted feature for networkd 2022-10-08 15:09:33 +09:00
Yu Watanabe 02dfb6a3c9 Merge pull request #24930 from yuwata/network-drop-ndisc-vacuum
network: further follow-ups for recent NDisc PRs
2022-10-07 18:38:34 +09:00
Yu Watanabe 261979ed85 Merge pull request #24931 from bluca/news
hwdb and NEWS
2022-10-07 18:38:18 +09:00
Yu Watanabe b3fac19f1b network: free timer event source for NDisc when link is freed
Though, it should be already freed already freed in link_stop_engines()
-> ndisc_stop(). Just for safety.
2022-10-07 14:32:13 +09:00
Yu Watanabe 44085d63f0 network: drop unnecessary call of ndisc_vacuum()
After the commit 773024685b, DNS servers
or domains are dropped when their lifefime become zero. Hence, it is not
necessary to try to them when writing state file.

Of course, because of the accuracy of the timer event source or priority
of event sources, a possibility is introduced that a DNS server or domain
with zero lifetime is stored in the state file. However, such entry will
be dropped soon when the timer event source is triggered. Hence, that
should not cause any real issues.
2022-10-07 14:17:28 +09:00
Yu Watanabe e6766c538a udev-builtin-net_id: reading phys_port_name may be refused with EOPNOTSUPP
If reading the sysattr failed with such error, the whole operation in
net_id builtin command will fail, and the interface will not be renamed.

Fixes a bug introduced by 5bbcfbaa11.
2022-10-04 20:29:41 +09:00
Yu Watanabe 8aba7b839b network: ndisc: do not accept too many DNS servers or domains
If there exists multiple routers, then the previous logic may introduce
too many DNS servers or domains.
2022-10-04 02:52:49 +09:00
Yu Watanabe af2aea8bb6 network: ndisc: drop addresses and friends when RA with zero lifetime is received
Routers may send options with zero lifetime if previously announced
information is outdated. Hence, if we receive such messages, then we
need to drop relevant addresses or friends.

See e.g. https://www.rfc-editor.org/rfc/rfc4861#section-12.

Follow-up for 2ccada8dc4.
2022-10-04 02:52:46 +09:00
Yu Watanabe 0cf1fe8888 network: make sec_to_usec() map 0sec -> 0usec
Zero lifetime in RA is special, and we should not assign possibly very
short lifetime addresses or friends.

This should not change anything at least now, preparation for later
commits. Note, DHCPv4 and v6 code also uses it, but sd-dhcp-client and
sd-dhcp6-client already filtered messages with zero lifetime. Hence,
the change should not affect DHCP code.
2022-10-04 00:25:14 +09:00
Yu Watanabe 773024685b network: ndisc: also introduce timer event source to drop outdated settings
Otherwise, settings based on previously received RA messages will never
removed without receiving a new RA message.
2022-10-04 00:25:14 +09:00
Yu Watanabe 94e6d37c2b network: ndisc: drop outdated settings before processing RA message
Otherwise, e.g. if a router is replaced, then the previously received
settings may never dropped.

Follow-up for 2ccada8dc4.
2022-10-04 00:25:14 +09:00
Yu Watanabe 8d1babc51d network: ndisc: address_get() returns 0 on success
After the commit 3b6a3bdebf, address_get()
does not return 1.
2022-10-04 00:25:14 +09:00
Yu Watanabe d4b7631468 network: introduce {address,route}_remove_and_drop()
Preparation for later commits.
2022-10-04 00:25:14 +09:00
Yu Watanabe a115c60e0d network: ndisc: ignore prefix option with link-local prefix
See https://www.rfc-editor.org/rfc/rfc4861#section-4.6.2.
2022-10-04 00:25:14 +09:00
Yu Watanabe 167c7ae511 network: ndisc: read prefix earlier
No functional changes.
2022-10-04 00:25:14 +09:00
Yu Watanabe 0a8720c7f0 network: fix use-after-free
If the lifetime of the route is already expired, do not try to
configure it.

Fixes a use-after-free, as the Request object is already freed, thus, we
cannot use Route or Link stored in Request object.
2022-10-03 09:15:10 +02:00
Yu Watanabe 2ff7862bf2 resolve: drop remaining references for Monitor=
Follow-up for b25d819aee.
2022-10-03 08:26:05 +02:00
Yu Watanabe f01f70a9a3 test: add more tests for StateDirectory= with DynamicUser=
This also moves the check for writable paths from test-execute to TEST-34.

Closes #10337.
2022-10-03 09:25:00 +09:00
Yu Watanabe a2ab603cc4 core: do not create symlink to private directory if parent already exists
The very basic functinality of StateDirectory= or friends is creating
specified directories. That should work if one entry is a subdirectory
of another. However, it does not when combined with DynamicUser=yes.

To support such case, this adds ExecDirectoryItem.only_create flag, and
if it is set PID1 only create private directory, and not create the symlink
to the private directory.

Fixes #24783.
2022-10-03 09:25:00 +09:00
Yu Watanabe 564e5c9878 core: make exec_directory_add() extends existing symlinks
Follow-up for 211a3d87fb.

Previously, although ExecDirectoryItem.symlinks is strv, it always
contains at most one symlink.
2022-10-03 09:25:00 +09:00
Yu Watanabe 64ebc0da03 resolve: fix typo 2022-10-03 09:23:37 +09:00
Yu Watanabe 59fde24c60 Merge pull request #24897 from mrc0mmand/TEST-64-sanitiers-open-scsi
test: pre-load ASan's DSO for iscsi-init.service
2022-10-03 07:51:50 +09:00
Yu Watanabe 9d2d346aae sd-dhcp6-client: allow to build large packet
Previously, the maximum packet size was hardcoded with 512 + size of
the DHCP header. This makes the packet size increased when necessary.
See option_append_hdr().

Previously, all functions which append DHCP options took the head of the
unused area of the packet, and the size of the free area.
However, with this change, the buffer for the whole packet may be
reallocated, hence now they take the head of the packet and the offset
to the free area.

Fixes #24851.
2022-10-02 23:05:05 +09:00
Yu Watanabe 0454223840 sd-dhcp6-client: rename buf -> p
No functional changes, just preparation for the next commit.
2022-10-02 23:05:05 +09:00
Yu Watanabe cb9c303d70 sd-dhcp6-client: use GREEDY_REALLOC() in dhcp6_option_append_vendor_class() 2022-10-02 23:05:05 +09:00
Yu Watanabe 60cbf2ea82 sd-dhcp6-client: use GREEDY_REALLOC()
And merge 'total' and 'offset' -> 'n'
2022-10-02 23:05:05 +09:00
Yu Watanabe 451daa394e sd-dhcp6-client: slightly shorten dhcp6_option_append_fqdn() 2022-10-02 23:05:05 +09:00
Yu Watanabe 6f8c3de6b7 sd-dhcp6-client: simplify dhcp6_option_append_ia() 2022-10-02 23:05:05 +09:00
Yu Watanabe 4ec5b5c778 sd-dhcp6-client: make dhcp6_option_append_fqdn() or friends handle zero length value gracefully 2022-10-02 23:05:05 +09:00
Yu Watanabe 93ed1c0eb9 sd-dhcp6-client: use assert() in non-public functions 2022-10-02 23:05:05 +09:00
Yu Watanabe 4124b03b8c sd-dhcp6-client: do not use implicit cast from integer to boolean 2022-10-02 23:05:05 +09:00
Yu Watanabe a78049fc0e resolve: do not cache mDNS goodbye packet
Fixes #24842.
2022-09-30 18:50:56 +09:00
Yu Watanabe 9449268fae Merge pull request #24820 from keszybz/tmpfiles-warning
Downgrade warning about unitialized-/etc in tmpfiles
2022-09-30 18:50:31 +09:00
Yu Watanabe ad8c442a0b test-64-udev-storage: use wait command instead of hackish "udevadm lock true"
Otherwise, "udevadm lock true" may lock a block device earlier than
"udevadm lock sfdisk &".
2022-09-30 03:42:05 +09:00
Yu Watanabe 4273a041f1 udevadm: do not try to find device unit when a path like string is provided
Otherwise, we provide misleading error message.
Before:
---
$ udevadm info /sys/class/foo
Bad argument "/sys/class/foo", expected an absolute path in /dev/ or /sys/ or a unit name: Invalid argument
---
After:
---
$ udevadm info /sys/class/foo
Unknown device "/sys/class/foo": No such device
---
2022-09-30 02:05:09 +09:00
Yu Watanabe 4f0ad43e24 loop-util: re-introduce loop_device_open() which takes sd_device object
Then, this makes loop_device_open_from_fd() or _from_path() be wrappers
of loop_device_open() with block_device_new_from_fd() or _from_path(),
respectively.
2022-09-28 17:42:37 +09:00
Yu Watanabe de3b7f168e loop-util: rename loop_device_open() -> loop_device_open_from_path()
No functional changes, just preparation for later commits.
2022-09-28 17:42:37 +09:00
Yu Watanabe fd690a4b7f blockdev-util: introduce block_device_new_from_fd() and block_device_new_from_path()
These are possible replacements of get_block_device(),
get_block_device_harder(), path_get_whole_disk(), and friends.
2022-09-28 17:42:23 +09:00
Yu Watanabe 612fc70fc0 blockdev-util: re-implement block_get_originating() by using sd_device
And split out the core logic as block_device_get_originating().
Hopefully, this changes no behavior. Just refactoring and preparation
for later commits.
2022-09-28 17:41:09 +09:00
Yu Watanabe 446f8db66b blockdev-util: reopen file descriptor only when O_PATH is set
Prompted by 13879c54d4.
2022-09-28 17:41:09 +09:00
Yu Watanabe 7e4a0387c4 blockdev-util: split-out fd_get_devnum()
No functional changes, just preparation for later commits.
2022-09-28 17:41:09 +09:00