Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 9a67c080b0 Merge pull request #18506 from keszybz/fuzz-systemctl-parse-argv
Fuzzer for systemctl argline parsing
2021-02-11 00:29:22 +09:00
Yu Watanabe 7bc38f59dc log: do not use uninitialized value
Follow-up for 85cf96e3f5.
2021-02-09 13:58:12 +01:00
Yu Watanabe beb75dd31d test-network: support protocol and linkdown flag for ff00::/8 route
Fixes #18507.
2021-02-09 12:25:27 +01:00
Yu Watanabe 8087644a13 tree-wide: replace strverscmp() and str_verscmp() with strverscmp_improved() 2021-02-09 14:25:03 +09:00
Yu Watanabe 87b7d9b6ff string-util: introduce strverscmp_improved()
Unfortunately, strverscmp() from libc or str_verscmp() do not correctly
handle pre-release version, e.g. 247 vs 247~rc1.

This implement a new comparison function, which is based on the RPM's
rpmvercmp().
2021-02-09 14:24:58 +09:00
Yu Watanabe e5bc5f1f5a fundamental: move several macros and functions into src/fundamental/
sd-boot has a copy of a subset of codes from libbasic. This makes
sd-boot share the code with libbasic, and dedup the code.

Note, startswith_no_case() is dropped from sd-boot, as
- it is not used,
- the previous implementation is not correct,
- gnu-efi does not have StrniCmp() or so.
2021-02-09 14:22:54 +09:00
Yu Watanabe 822be62fb2 hostnamectl: use Table 2021-02-09 13:49:27 +09:00
Yu Watanabe f2d3ec7abf hostnamectl: show hint when user try to set transient hostname but static hostname is already used 2021-02-09 13:49:27 +09:00
Yu Watanabe e8acf09186 hostname: use free_and_strdup_and_warn() 2021-02-09 13:49:27 +09:00
Yu Watanabe ba12e41d05 hostname: re-read file later when failed to update file
Previously, even when writing e.g. /etc/hostname fails, the static
hostname in Context is not restored. So, the subsequent call of the same
method succeeds:
```
$ sudo chattr +i /etc/hostname
$ sudo hostnamectl --static set-hostname aaa
Could not set static hostname: Access denied
$ echo $?
1
$ sudo hostnamectl --static set-hostname aaa
$ echo $?
0
```

This makes when updating file is failed, the saved stat is cleared. So,
the static hostname or machine information in the context are always
consistent to the corresponding files.
2021-02-09 13:49:27 +09:00
Yu Watanabe c388618ec0 hostnamectl: unset pretty hostname only when no target is specified 2021-02-09 13:49:27 +09:00
Yu Watanabe 2d79e90a1f hostnamectl: try to set transient hostname even if updating static or pretty hostname failed
If no target (--pretty, --static, or --transient) is specified, then
let's try to set transient hostname even if setting static or pretty
hostname failed. This may be useful for read-only filesystem.
2021-02-09 13:49:15 +09:00
Yu Watanabe 957991b7ac hostname: introduce two bus errors for updating file 2021-02-09 13:37:27 +09:00
Yu Watanabe 0ce2a086da bus-error: align error definitions 2021-02-09 13:37:27 +09:00
Yu Watanabe 5c3d2e3f43 hostnamectl: improve log message on failure 2021-02-09 13:37:27 +09:00
Yu Watanabe 7bac23e8af man: fix typo 2021-02-04 19:17:50 +01:00
Yu Watanabe 436cde839f Merge pull request #18462 from poettering/copy-time
timestamp fixes in copy.c
2021-02-04 14:04:37 +09:00
Yu Watanabe 245f4b384d Merge pull request #18459 from poettering/discover-image
shared: rename machine-image.[ch] → discover-image.[ch]
2021-02-04 13:57:37 +09:00
Yu Watanabe 0fb613000d test-network: disable NDISC on veth-peer
This should speed the tests up.
2021-02-03 22:09:07 +00:00
Yu Watanabe 27897cecff Merge pull request #18319 from yuwata/udev-move-tx-rx-queues
network,udev: move TransmitQueues=/ReceiveQueues= from .network to .link
2021-02-03 18:18:57 +09:00
Yu Watanabe 89d2da287b Merge pull request #18423 from DaanDeMeyer/sd-boot-no-include
More sd-boot cleanups
2021-02-03 15:04:26 +09:00
Yu Watanabe face9fcc16 network,udev: move TransmitQueues=/ReceiveQueues= from .network to .link
As the settings are mostly hardware setup, and merely see from network
layer.

See also discussions in
https://github.com/systemd/systemd/pull/18170#issuecomment-758807497
https://github.com/orgs/systemd/teams/systemd/discussions/1
2021-02-03 14:44:51 +09:00
Yu Watanabe 1f8dc96c06 udev: rename TxQueueLength= -> TransmitQueueLength=
As we usually (unfortunately not always though) do not use abbreviations.

Tx may be standard abbreviation, but we already have e.g.
TransmitChecksumOffload=. So, let's use Transmit instead of Tx.

Follow-up for ef4a91a7e8.
2021-02-03 14:43:49 +09:00
Yu Watanabe d96d8a81ef test: add tests for RouteTable= setting 2021-02-03 14:39:25 +09:00
Yu Watanabe 552b90a2f2 network: use defined route table name in debug logs
And rename route_table_from_string_full() to
manager_get_route_table_from_string().
2021-02-03 14:36:50 +09:00
Yu Watanabe 310eff7274 network: make RouteTable= setting can take multiple name:number pairs in a line
Follow-up for c038ce4606.
2021-02-03 14:32:26 +09:00
Yu Watanabe ecf83c2429 libudev: add one more assertion 2021-02-02 03:23:31 +09:00
Yu Watanabe 65c637ad2c libudev: unset uptodate flag before free()ing entries
udev_list_entry_free() also removes the entry from LIST if the flag is
set. This slightly optimizes the cleanup logic.
2021-02-02 02:34:23 +09:00
Yu Watanabe 8e5ce38727 libudev: also drop the entry from LIST even if unique flag is set
Otherwise, the list becomes dirty when an entry is freed.

This also remove the entry from the hashmap only when its name is set.
The name should be always set, so that does not change anything. But
just for safety.
2021-02-02 02:28:33 +09:00
Yu Watanabe 140716a516 libudev: set entry->list after the entry is stored in the list
This should not change anything. As hashmap_remove() is called before
hashmap_ensure_put(). So, even if hashmap_ensure_put() fails, a wrong
entry will not removed from the hashmap by udev_list_entry_free().
But anyway, just for safety.
2021-02-02 02:22:59 +09:00
Yu Watanabe eaef130d3f libudev: use hashmap_ensure_put() 2021-02-02 02:22:35 +09:00
Yu Watanabe 8b9708d1d3 sd-event: retrieve more events when epoll_wait() returns number equivalent to the buffer size
When epoll_wait() returns number equivalent to the buffer size, there
may exist remaining events which may have higher priority. To make priority
sorting correctly, let's retrieve all events.
2021-02-02 01:14:39 +09:00
Yu Watanabe ac714078bf test: add test for udev_event_spawn() 2021-02-02 01:14:33 +09:00
Yu Watanabe 2be0218a70 udev: ignore OOM error in on_spawn_io() 2021-02-02 01:10:59 +09:00
Yu Watanabe 28a5065149 udev: use strv_split_newlines() to parse result of spawned command 2021-02-01 23:37:27 +09:00
Yu Watanabe 90d260d81f udev: add debugging logs in spawn_wait() 2021-02-01 23:37:27 +09:00
Yu Watanabe 85cf96e3f5 log: skip reading the kernel command line if the process is invoked by a script
CLI tools may be used in a script. E.g., a script for monitoring a
service may use `systemctl`. Previously, if the kernel command line has
e.g. systemd.log-level=debug, then systemctl in the script produces
debugging logs when the script is invoked by a .service unit, but does
not when the script is running in a terminal. Then,
https://github.com/systemd/systemd/pull/18281#discussion_r561697482,
> I expect users to be (negatively) surprised.

In the previous commit, $SYSTEMD_EXEC_PID= is introduced. Then, we can
now detect whether a command is directly invoked by systemd or through
a script. Let's skip reading the kernel command line when a command is
invoked through a script.
2021-02-01 01:19:57 +09:00
Yu Watanabe d754890843 import,home: update $SYSTEMD_EXEC_PID= if it is set
The subsequent execv() or execl() always calls tools provided by
systemd. So, it is safe to update the variable.
2021-02-01 01:19:52 +09:00
Yu Watanabe 43f565c677 core: also set $SYSTEMD_EXEC_PID= for generators 2021-02-01 01:13:44 +09:00
Yu Watanabe cfd1c6e262 env-util: introduce env_update_systemd_exec_pid()
Will be used in later commits.
2021-02-01 01:13:44 +09:00
Yu Watanabe 2824374f95 test: use test_setup_logging() in test-env-util 2021-02-01 01:13:44 +09:00
Yu Watanabe dc4e2940e8 core: set $SYSTEMD_EXEC_PID= environment variable for executed commands
It may be useful to detect a command is directly executed by systemd
manager, or indirectly as a child of another process.
2021-02-01 01:13:44 +09:00
Yu Watanabe d2acb93dc5 tree-wide: enable colorized logging for daemons when run in console
It may be useful when debugging daemons.
2021-02-01 01:13:44 +09:00
Yu Watanabe 74189020eb log: make tools also read the kernel command line when run as a service
This effectively reverts 41d1f469cf.

Before this, e.g., `networkctl reload` invoked by `systemctl reload systemd-networkd.service`
does not produce debugging logs even if systemd.log-level=debug is set. This fixes
the issue.
2021-02-01 01:13:44 +09:00
Yu Watanabe 8ccc31d498 network: drop one more link_dirty()
Follow-up for 9092113d93.

link_dirty() will be called later in this function when a DNS or domain
is dropped.
2021-02-01 01:11:44 +09:00
Yu Watanabe 5caac53adb Merge pull request #18417 from DaanDeMeyer/sd-boot-no-include
sd-boot fixes
2021-01-31 22:26:59 +09:00
Yu Watanabe 37baf8db56 Merge pull request #18380 from yuwata/test-network-ipv6-proxy-ndp
test-network: add tests for IPv6ProxyNDPAddress=
2021-01-27 10:47:36 +09:00
Yu Watanabe f0d87798ea test-network: retry several times if expected LLDP info is not obtained
As LLDP thing does not get involved in the link status, `networkctl lldp`
may not provide an expected information even if the link is in
'configured' state.

Fixes #17360.
2021-01-26 18:48:44 +01:00
Yu Watanabe 190d05c0e7 network: drop unnecessary condition in error path
See neigh_add() in kernel. It does not return EEXIST.
2021-01-27 01:28:28 +09:00
Yu Watanabe 4816e7bb75 network: drop wrong flag for neighbor entry
NLM_F_REQUEST is a nlmsg flag, not a neighbor flag.
2021-01-27 01:28:28 +09:00
Yu Watanabe cff0cadcac test-network: add tests for IPv6ProxyNDPAddress= 2021-01-27 01:28:28 +09:00
Yu Watanabe 49f2369377 sd-device: do not use downgrade-to-bool feature 2021-01-27 00:01:02 +09:00
Yu Watanabe d6ae82bdd9 sd-netlink: fix indentation 2021-01-26 23:58:08 +09:00
Yu Watanabe 22d33e8090 sd-netlink: do not use downgrade-to-bool feature 2021-01-26 23:57:59 +09:00
Yu Watanabe 679dab6a8f docs/ENVIRONMENT: move entry for systemd-udevd
`$SYSTEMD_REBOOT_TO_FIRMWARE_SETUP=` or friends are for logind.
2021-01-26 13:45:47 +00:00
Yu Watanabe ce634c4a4d sd-device: use size_t for index in the loop 2021-01-26 20:35:53 +09:00
Yu Watanabe 61c0972dad sd-device: use string_hash_ops_free_free 2021-01-26 20:26:33 +09:00
Yu Watanabe 327379f5f2 sd-device: add a short comment why we simply return negative errno here on failure 2021-01-26 20:07:38 +09:00
Yu Watanabe 4f1ef7f9e0 sd-device: rename variables and use TAKE_PTR() 2021-01-26 19:56:13 +09:00
Yu Watanabe dd75bbee43 sd-device: use string_hash_ops_free_free 2021-01-26 19:52:56 +09:00
Yu Watanabe 4c6eb1d77d Merge pull request #18371 from yuwata/use-ansi-normal
tree-wide: use ansi_normal() instead of ANSI_NORMAL
2021-01-25 23:40:14 +09:00
Yu Watanabe 5312fa8751 Merge pull request #18281 from yuwata/log-drop-log-realm
log: drop LogRealm
2021-01-25 23:39:29 +09:00
Yu Watanabe 6d533e56f8 cgtop: use ansi_normal() or friends instead of ANSI_NORMAL 2021-01-25 20:52:53 +09:00
Yu Watanabe cd7ae1b44e logs-show: simplify code 2021-01-25 20:52:20 +09:00
Yu Watanabe bb146d238f terminal-util: use ansi_normal() or friends instead of ANSI_NORMAL 2021-01-25 20:52:12 +09:00
Yu Watanabe 7b376b29a3 log: use ansi_normal() instead of ANSI_NORMAL 2021-01-25 20:52:03 +09:00
Yu Watanabe 9fdee66f2d log: drop unused LogRealm
Already no binary is built with LOG_REALM= argument.
Hence, we can safely drop LogRealm now.
2021-01-25 20:32:18 +09:00
Yu Watanabe 3cc6b14a87 udev: stop to use LOG_REALM_UDEV
Before this commit, udevd is built with LOG_REALM=LOG_REALM_UDEV.
However, log level specified by e.g. environment variable or kernel
command line option are also passed to LOG_REALM_SYSTEMD. So, the
maximum log level for the two realms are always equivalent, and it is
not necessary to specify the build option. Hence drop it.
2021-01-25 20:32:18 +09:00
Yu Watanabe 10d296c189 selinux-util: do not use log_internal_realm() without setting log realm 2021-01-25 20:32:18 +09:00
Yu Watanabe 5df4f46f28 log: drop unused log_full_errno_realm() macro 2021-01-25 20:32:18 +09:00
Yu Watanabe f190ac486e hostname: accept an empty hostname to unset transient hostname
Follow-up for 60e4fb4240.

Before 60e4fb4240,
`hostnamectl --transient set-hostname ""` unsets the transient hostname.
But after the commit, it is refused. This fixes the issue.
2021-01-22 07:40:26 +01:00
Yu Watanabe abcf60e730 dhcp: use conservative_rename() 2021-01-22 12:55:54 +09:00
Yu Watanabe af664001f5 network: use conservative_rename() to reduce to trigger network events
networkd part to fix #17577.

Note resolved part is f3e1f00d03.
2021-01-22 12:55:54 +09:00
Yu Watanabe 10195179bb fs-util: rename conservative_rename() -> conservative_renameat()
And this introduces conservative_rename() which does not take dirfd.
2021-01-22 12:55:54 +09:00
Yu Watanabe 9092113d93 network: drop many unnecessary link_dirty() calls
Now link state saves mostly link state, DNS and NTP settings, .network
file name. So, it is not necessary to call link_dirty() e.g. when an
address is updated. This drops such unnecessary link_dirty() calls.
2021-01-22 12:55:51 +09:00
Yu Watanabe 92395e0e83 network: do not re-assign static routes when dynamic IPv6 addresses are updated
This effectively reverts 6545067aa9.

Unlike IPv4 addresses, routes are not removed when IPv6 addresses are
removed. So, it is not necessary to re-assign routes.
2021-01-22 12:53:18 +09:00
Yu Watanabe 3e405f28f4 Merge pull request #16228 from ddstreet/administrative_state
Add ActivationPolicy= [Link] parameter
2021-01-22 12:11:29 +09:00
Yu Watanabe 33f7b61ca5 Merge pull request #18329 from poettering/notify-chroot
chroot/sd_notify() fixes
2021-01-21 13:16:59 +09:00
Yu Watanabe 4723205968 Merge pull request #18311 from poettering/sysext-fixups
sysext: post-merge fixups
2021-01-21 07:20:04 +09:00
Yu Watanabe 4dbc0be2e5 udev/cdrom_id: re-enable logging related functions
The logging related functions are mistakenly located in main() by
a084b38789, and dropped by
23afa884d4.
2021-01-20 18:31:10 +00:00
Yu Watanabe 888f65ace6 path-util: simplify check_x_access()
Follow-up for ece852c845.

This addresses the following comments by the Lennart:
---
hmm, so this now does two access() calls for the case where the fd is
not requested, and opens things up for races (theoretically, …). now,
the access() code path was in place for optimization, but if an optimization
is less sexy than the original (and i think it is less sexy, since more
than one syscall, and non-atomic), i think we shouldn't do the optimization.

maybe we should just always use open(O_PATH) now, and then fstat() it to
check if regular file, and then access_fd() it for checking if its executable.
2021-01-20 17:43:36 +01:00
Yu Watanabe 7b5ed18779 Merge pull request #18294 from ssahani/net-2
tree wide use ensure_put
2021-01-19 16:46:41 +09:00
Yu Watanabe 29d65a4388 Merge pull request #18303 from yuwata/verity-cleanup
veritysetup-generator: drop unused struct and variable
2021-01-19 12:22:55 +09:00
Yu Watanabe 7e2757c42f Merge pull request #18038 from yuwata/meson-split
meson: various cleanups
2021-01-19 12:22:34 +09:00
Yu Watanabe 4c6dd238b8 Merge pull request #18267 from lucaswerkmeister/truncate
Two StandardOutput=truncate:file improvements
2021-01-19 08:47:39 +09:00
Yu Watanabe ceed428305 Merge pull request #18299 from ssahani/ensure-put
More use of hashmap_ensure_put and ordered_hashmap_ensure_put
2021-01-19 08:42:26 +09:00
Yu Watanabe 13a4e9f209 TODO: fix typo 2021-01-19 07:22:48 +09:00
Yu Watanabe 71ce3ba25b veritysetup-generator: drop unused struct and variable
Follow-ups for 08b04ec7e7.

This also drops unnecessary inclusion.

Fixes CID#1443889.
2021-01-19 07:21:57 +09:00
Yu Watanabe 024e9084c1 meson: move several definitions related libsystemd to src/libsystemd/meson.build 2021-01-19 07:06:32 +09:00
Yu Watanabe 40dbce36df meson: use static_libsystemd_pic 2021-01-19 07:06:32 +09:00
Yu Watanabe a0e150b2f4 meson: add missing license header 2021-01-19 07:06:32 +09:00
Yu Watanabe e025c9dfe3 meson: move test or fuzzer definitions to relevant meson.build in subdirectories 2021-01-19 07:06:32 +09:00
Yu Watanabe b5c34d6bf1 meson: drop unused variable 2021-01-19 07:06:32 +09:00
Yu Watanabe 04e7ada0d7 meson: drop unnecessary files from test definitions 2021-01-19 07:06:32 +09:00
Yu Watanabe 74b28f2b36 meson: drop unnecessary libraries from journal related tests 2021-01-19 07:06:32 +09:00
Yu Watanabe 8d40961c3c meson: slightly disentangle code dependencies
But, still sd-id128 is used in src/basic.
2021-01-19 07:06:32 +09:00
Yu Watanabe b61016f207 meson: sort inclusion of meson.build files in subdirectories 2021-01-19 07:06:32 +09:00
Yu Watanabe 529642936b meson: move libjournal_core definition to src/journal/meson.build 2021-01-19 07:06:32 +09:00
Yu Watanabe 3976f372ae meson: move libudev related definitions to src/libudev/meson.build
Also, this makes libudev.so built in build directory.
2021-01-19 07:06:32 +09:00
Yu Watanabe f6fe732ff3 meson: move and gather find_program() 2021-01-19 07:06:32 +09:00