Zbigniew Jędrzejewski-Szmek [Mon, 28 Sep 2020 15:29:34 +0000 (17:29 +0200)]
systemctl: ignore invalid variables in import-environment
When doing import-environment, we shouldn't fail if some assignment is invalid.
OTOH, if the invalid assignment is specified as a positional argument, we should
keep failing.
This would also fix https://bugzilla.redhat.com/show_bug.cgi?id=
1754395, by
ignoring certain variables which are not important in that scenario. It seems
like the right thing to do in general.
Zbigniew Jędrzejewski-Szmek [Mon, 28 Sep 2020 14:30:53 +0000 (16:30 +0200)]
basic/env-util: (mostly) follow POSIX for what variable names are allowed
There was some confusion about what POSIX says about variable names:
names shall not contain the character '='. For values to be portable
across systems conforming to POSIX.1-2008, the value shall be composed
of characters from the portable character set (except NUL and as
indicated below).
i.e. it allows almost all ASCII in variable names (without NUL and DEL and
'='). OTOH, it says that *utilities* use a smaller set of characters:
Environment variable names used by the utilities in the Shell and
Utilities volume of POSIX.1-2008 consist solely of uppercase letters,
digits, and the <underscore> ( '_' ) from the characters defined in
Portable Character Set and do not begin with a digit.
When enforcing variable names in environment blocks, we need to use this
first definition, so that we can propagate all valid variables.
I think having non-printable characters in variable names is too much, so
I took out the whitespace stuff from the first definition.
OTOH, when we use *shell syntax*, for example doing variable expansion,
it seems enough to support expansion of variables that the shell would allow.
Fixes #14878,
https://bugzilla.redhat.com/show_bug.cgi?id=
1754395,
https://bugzilla.redhat.com/show_bug.cgi?id=
1879216.
Zbigniew Jędrzejewski-Szmek [Mon, 28 Sep 2020 12:54:16 +0000 (14:54 +0200)]
test-env-util: print function headers
Lennart Poettering [Fri, 9 Oct 2020 13:56:43 +0000 (15:56 +0200)]
Merge pull request #17286 from benzea/benzea/xdg-autostart-improvements
XDG autostart improvements
mirabilos [Fri, 9 Oct 2020 06:56:57 +0000 (08:56 +0200)]
missing_syscall: fixup syscall numbers for x32 vs. amd64
Lennart Poettering [Fri, 9 Oct 2020 09:56:15 +0000 (11:56 +0200)]
Merge pull request #17289 from keszybz/two-coverity-fixes
Two coverity-inspired fixes
Benjamin Berg [Thu, 8 Oct 2020 13:58:37 +0000 (15:58 +0200)]
xdg-autostart: Ignore more common XDG Desktop Entry fields
It makes sense to ignore all the common fields that are expected and
that we can safely ignore. Note that it is fine to ignore URL as we will
already warn about the type= being wrong in that case.
Closes: #17276
Benjamin Berg [Thu, 8 Oct 2020 13:58:08 +0000 (15:58 +0200)]
xdg-autostart: Add support for Path= in XDG Desktop File
This sets the working directory of the application.
Lennart Poettering [Thu, 8 Oct 2020 16:40:35 +0000 (18:40 +0200)]
ratelimit: add ratelimit_configured() helper
This helper alone doesn't make too much sense, but it's preparatory work
for #17274, and I guess it can't hurt to land it early, it does make the
ratelimit code a tiny bit prettier after all.
Lennart Poettering [Thu, 8 Oct 2020 16:50:36 +0000 (18:50 +0200)]
sd-event: check return value of syscals directly, avoid redundant variable assignment
And while we are at it, fix one incorrect error propagation.
Zbigniew Jędrzejewski-Szmek [Fri, 9 Oct 2020 06:14:54 +0000 (08:14 +0200)]
networkd: add assert to appease coverity
The code was OK, but not obviously so. Let's add an assert to help a
human or nonhuman reader figure it out.
Coverity CID#
1433224.
Zbigniew Jędrzejewski-Szmek [Fri, 9 Oct 2020 06:04:25 +0000 (08:04 +0200)]
systemctl: fix reversed arguments in function call
This is confusing, but had no effect because the arguments were consistently
switched.
Coverity CID#
1433223.
Lennart Poettering [Thu, 8 Oct 2020 08:27:30 +0000 (10:27 +0200)]
missing-syscall: fix copypasta
As noticed by @mbiebl:
https://github.com/systemd/systemd/commit/
5134e18eedc30bfe5397ed31f94903d984a60cfc#r43033443
Michael Biebl [Wed, 7 Oct 2020 15:44:05 +0000 (17:44 +0200)]
basic/missing_syscall: fix syscall numbers for mips*
Thanks Christian Brauner @brauner
Fixes: #17261
Lennart Poettering [Thu, 8 Oct 2020 08:17:29 +0000 (10:17 +0200)]
Merge pull request #17279 from poettering/systemctl-split-up
systemctl: split huge .c file into smaller bits
Yu Watanabe [Thu, 8 Oct 2020 06:55:35 +0000 (15:55 +0900)]
Merge pull request #17271 from yuwata/network-route-improve-multipath-route-support
network: improve multipath route support
Lennart Poettering [Wed, 7 Oct 2020 09:27:56 +0000 (11:27 +0200)]
systemctl: split up humungous systemctl.c file
This is just some refactoring: shifting around of code, not change in
codeflow.
This splits up the way too huge systemctl.c in multiple more easily
digestable files. It roughly follows the rule that each family of verbs
gets its own .c/.h file pair, and so do all the compat executable names
we support. Plus three extra files for sysv compat (which existed before
already, but I renamed slightly, to get the systemctl- prefix lik
everything else), a -util file with generic stuff everything uses, and a
-logind file with everything that talks directly to logind instead of
PID1.
systemctl is still a bit too complex for my taste, but I think this way
itc omes in a more digestable bits at least.
No change of behaviour, just reshuffling of some code.
Lennart Poettering [Wed, 7 Oct 2020 19:56:41 +0000 (21:56 +0200)]
systemctl: move compare_unit_info() to bus-unit-util.[ch]
It's an auxiliary function to the UnitInfo structures, and very generic.
Let's hence move it over to the other code operating with UnitInfo, even
if it's not used by code outside of systemctl (yet).
Lennart Poettering [Wed, 7 Oct 2020 14:38:29 +0000 (16:38 +0200)]
pretty-print: don't abbreviate needlessly in user-facing string
Lennart Poettering [Wed, 7 Oct 2020 14:38:07 +0000 (16:38 +0200)]
basic: include stddef.h since we use NULL in header
Yu Watanabe [Wed, 7 Oct 2020 11:42:54 +0000 (13:42 +0200)]
network: introduce IPV4_ADDRESS_FMT_STR macro
This also moves ADDRESS_FMT_VAL() macro to networkd-address.h, and
renames it to IPV4_ADDRESS_FMT_VAL().
Yu Watanabe [Wed, 7 Oct 2020 11:39:47 +0000 (13:39 +0200)]
network: make Gateway= in [Route] section accept an empty string
Yu Watanabe [Wed, 7 Oct 2020 11:34:00 +0000 (13:34 +0200)]
network: introduce Gateway=_dhcp4 and _dhcp6, and deprecate "_dhcp"
Fixes #17249.
Yu Watanabe [Wed, 7 Oct 2020 11:02:00 +0000 (13:02 +0200)]
test-network: do not fail when multiple ipv6 default gateways are configured
When multiple ipv6 default gateways are set, kernel seems to merge them
into a multipath route.
Yu Watanabe [Wed, 7 Oct 2020 10:39:59 +0000 (19:39 +0900)]
util: make local_gateways() support RT_VIA and RT_MULTIPATH
Then, `networkctl status` correctly shows gateways.
Yu Watanabe [Wed, 7 Oct 2020 05:25:11 +0000 (14:25 +0900)]
network: manage multipath routes separately
Yu Watanabe [Wed, 7 Oct 2020 05:24:08 +0000 (14:24 +0900)]
sd-netlink: introduce sd_netlink_message_read_data()
Yu Watanabe [Wed, 7 Oct 2020 04:00:45 +0000 (13:00 +0900)]
sd-netlink: introduce rtattr_read_nexthop()
Yu Watanabe [Wed, 7 Oct 2020 02:06:27 +0000 (11:06 +0900)]
network: free Route object when route_remove() fails
When route_remove() succeeds, the Route object will be freed later by
manager_rtnl_process_route().
Yu Watanabe [Wed, 7 Oct 2020 02:01:02 +0000 (11:01 +0900)]
network: constify arguments
Yu Watanabe [Thu, 13 Aug 2020 16:52:19 +0000 (01:52 +0900)]
test-network: add a test case for IPv4 route with IPv6 gateway
Renaud Métrich [Fri, 2 Oct 2020 15:30:35 +0000 (17:30 +0200)]
unit: don't emit PropertiesChanged signal if adding a dependency to a unit is a no-op
Yu Watanabe [Wed, 7 Oct 2020 01:04:13 +0000 (10:04 +0900)]
network: support IPv4 route with IPv6 gateway
Yu Watanabe [Thu, 13 Aug 2020 16:50:45 +0000 (01:50 +0900)]
sd-netlink: fix type of RTA_VIA
Yu Watanabe [Wed, 7 Oct 2020 00:41:52 +0000 (09:41 +0900)]
network: also manage routes without RTA_OIF attribute
Yu Watanabe [Thu, 13 Aug 2020 15:04:00 +0000 (00:04 +0900)]
network: ignore Scope= for IPv6 routes as it will not be used
Yu Watanabe [Thu, 13 Aug 2020 10:01:23 +0000 (19:01 +0900)]
test-network: drop meaningless Scope= settings in the config
Yu Watanabe [Thu, 13 Aug 2020 09:55:06 +0000 (18:55 +0900)]
network: set default priority for IPv6 routes
See inet6_rtm_newroute() in kernel's net/ipv6/route.c.
Yu Watanabe [Wed, 7 Oct 2020 13:21:12 +0000 (15:21 +0200)]
basic: import linux/ipv6_route.h
Yu Watanabe [Wed, 7 Oct 2020 13:20:37 +0000 (15:20 +0200)]
meson: add missing files
Lennart Poettering [Wed, 7 Oct 2020 09:30:32 +0000 (11:30 +0200)]
systemctl: drop unsused variable original_stdout_is_tty
Unused since
de9a8fe18e0168b65ae50b6dde2865f647fc92a2.
Lennart Poettering [Wed, 7 Oct 2020 12:11:46 +0000 (14:11 +0200)]
update TODO
Lennart Poettering [Wed, 7 Oct 2020 10:55:56 +0000 (12:55 +0200)]
Merge pull request #17231 from poettering/event-source-exit-on-failure
sd-event: add "exit-on-failure" feature for event source
Zbigniew Jędrzejewski-Szmek [Tue, 6 Oct 2020 11:59:25 +0000 (13:59 +0200)]
Document some reasonable DNS servers in the example config file
We have an option to set the fallback list, so we don't know what the contents
are. It may in fact be empty. Let's add some examples to make it easy for a user
stranded without any DNS to fill in something that would work. As a bonus, this
also gives names to the entries we provide by default.
(I added google and cloudflare because that's what we have currently, and quad9
because it seems to be a good privacy-concious and fast choice and was requested
in #12499. As a minimum, things we should include should be well-known global
services with a documented privacy policy and both IPv4 and IPv6 support and
decent response times.)
Lennart Poettering [Wed, 7 Oct 2020 07:45:58 +0000 (09:45 +0200)]
Merge pull request #17238 from keszybz/man-tmp-noexec
Say that noexec should not be used for /tmp
Lennart Poettering [Fri, 2 Oct 2020 08:00:00 +0000 (10:00 +0200)]
udev: make use of NULL callback in IO handlers
Lennart Poettering [Fri, 2 Oct 2020 07:51:36 +0000 (09:51 +0200)]
sd-event: support callback=NULL in IO/child/inotify/defer event sources, too
Also, document this functionality more prominently, including with a
reference from sd_event_exit().
This is mostly to make things complete, as previously we supported NULL
callbacks only in _add_time() and _add_signal(). However, I think this
makes snese for IO event sources too (think: when some fd such as a pipe
end sees SIGHUP or so, exit), as well as defer or post event sources (i.e. exit
once we got nothing else to do). This also adds support for inotify
event sources, simply to complete things (I can't see the immediate use,
but maybe someone else comes up with it).
The only event source type that doesn't allow callback=NULL now are exit
callbacks, but for them they make little sense, as the event loop is
exiting then anyway.
Lennart Poettering [Fri, 2 Oct 2020 07:13:37 +0000 (09:13 +0200)]
udev-util: make use of sd-event's NULL callback support
Lennart Poettering [Fri, 2 Oct 2020 07:13:17 +0000 (09:13 +0200)]
test: add test that validates that PTR_TO_INT(INT_TO_PTR()) covers whole int range
Lennart Poettering [Thu, 1 Oct 2020 20:21:05 +0000 (22:21 +0200)]
socket-proxy: port to new sd_event_source_set_exit_on_failure() API
Lennart Poettering [Thu, 1 Oct 2020 20:20:42 +0000 (22:20 +0200)]
socket-proxy: close correct fd, log at right log level
Lennart Poettering [Fri, 2 Oct 2020 08:14:44 +0000 (10:14 +0200)]
man: add docs for sd_event_source_set_exit_on_failure()
Lennart Poettering [Thu, 1 Oct 2020 20:17:31 +0000 (22:17 +0200)]
sd-event: optionally, if an event source fails, exit the event loop
Currently, if an event source callback returns an error, we'll disable
the event source and continue. This adds a per-event source flag that if
turned on goes further: the event loop is also exited, propagating the
error code.
This is inspired by some patterns repeatedly seen in #15206.
The idea is that event sources that server the "primary" function of a
program are marked like this, so that if they fail the failure is
instantly propagated and terminates the program.
Yu Watanabe [Tue, 6 Oct 2020 22:42:40 +0000 (07:42 +0900)]
Merge pull request #17240 from yuwata/network-cleanup
network: several cleanups and fix IPv4DAD and IP Masqurade
Marco Wang [Tue, 6 Oct 2020 17:07:55 +0000 (01:07 +0800)]
boot/efi: Explicitly specify void in parameter list
Functions that accept no arguments should be
explicitly declared a void parameter in their parameter list.
Signed-off-by: Marco Wang <m.aesophor@gmail.com>
Yu Watanabe [Mon, 5 Oct 2020 20:25:01 +0000 (22:25 +0200)]
test-network: also remove IPv6 rules
Yu Watanabe [Mon, 5 Oct 2020 19:53:35 +0000 (21:53 +0200)]
test-network: add a missing netdev in the list
Yu Watanabe [Mon, 5 Oct 2020 19:51:29 +0000 (21:51 +0200)]
test-network: disable RA in test_sriov
We usually disable IPv6AcceptRA= if the test does not require any
dynamic address configuration, as it makes slightly slow down the test.
C.f.
491b79aeac323909e8cef60ba6e91e27fd731679.
Yu Watanabe [Mon, 5 Oct 2020 19:47:44 +0000 (21:47 +0200)]
test-network: add missing file in the list
Yu Watanabe [Sun, 4 Oct 2020 10:54:56 +0000 (19:54 +0900)]
test-network: drop duplicated address
Yu Watanabe [Tue, 6 Oct 2020 18:21:59 +0000 (03:21 +0900)]
network: rename network_verify_xxx() -> network_drop_invalid_xxx()
As 'verify' implies a boolean result.
Yu Watanabe [Sun, 4 Oct 2020 02:06:23 +0000 (11:06 +0900)]
network: fix masquerade setting logic
Previously, address_establish() took Address object stored in Network
object. And address_release() took Address object stored in Link
object. Thus, address_release() always did nothing.
Yu Watanabe [Sun, 4 Oct 2020 01:57:03 +0000 (10:57 +0900)]
network: always use RT_SCOPE_HOST for IPv4 loopback addresses
For IPv6 case, use RT_SCOPE_HOST only when scope is not explicitly specified.
Yu Watanabe [Sun, 4 Oct 2020 00:27:42 +0000 (09:27 +0900)]
network: update MAC address in IPv4 ACD clients
When the MAC address of a link is updated, an address on the link may
be under checking address duplication. Or, (currently such code is not
implemented yet, but) address duplication check may be restarted later.
For that case, the IPv4 ACD clients must use the new updated MAC address.
Yu Watanabe [Sun, 4 Oct 2020 00:14:15 +0000 (09:14 +0900)]
network: configure IPv4 DAD per link address
Previously, IPv4 DAD is configured in each Address object stored in
Network object. If a .network file matches multipe links, then it causes
an assertion. To prevent it, now IPv4 DAD is configured in each Address
object belogs to Link object.
Yu Watanabe [Tue, 6 Oct 2020 17:57:54 +0000 (02:57 +0900)]
network: constify one argument
Yu Watanabe [Sat, 3 Oct 2020 23:47:42 +0000 (08:47 +0900)]
network: introduce address_copy()
Yu Watanabe [Sat, 3 Oct 2020 23:27:14 +0000 (08:27 +0900)]
network: do not update Address::flags in address_configure()
Yu Watanabe [Sat, 3 Oct 2020 23:14:27 +0000 (08:14 +0900)]
network: fix indentation
Yu Watanabe [Sat, 3 Oct 2020 22:43:41 +0000 (07:43 +0900)]
network: use sd_event stored in Manager
Yu Watanabe [Sat, 3 Oct 2020 22:37:22 +0000 (07:37 +0900)]
network: check feature is enabled in xxx_configure()
Yu Watanabe [Sat, 3 Oct 2020 21:50:55 +0000 (06:50 +0900)]
network: move link_enumerate_ipv6_tentative_addresses()
Yu Watanabe [Sat, 3 Oct 2020 21:37:12 +0000 (06:37 +0900)]
network: drop unused function
Yu Watanabe [Sat, 3 Oct 2020 21:25:44 +0000 (06:25 +0900)]
network: move sysctl related functions to networkd-sysctl.c
Yu Watanabe [Fri, 2 Oct 2020 11:55:18 +0000 (20:55 +0900)]
network: introduce radv_update_mac()
Yu Watanabe [Fri, 2 Oct 2020 11:41:41 +0000 (20:41 +0900)]
network: introduce dhcp6_update_mac()
Yu Watanabe [Fri, 2 Oct 2020 11:29:57 +0000 (20:29 +0900)]
network: introduce dhcp4_update_mac()
Yu Watanabe [Fri, 2 Oct 2020 11:25:11 +0000 (20:25 +0900)]
network: introduce ipv4ll_update_mac()
Yu Watanabe [Fri, 2 Oct 2020 11:15:44 +0000 (20:15 +0900)]
network: introduce link_serialize_dhcp6_client()
Yu Watanabe [Fri, 2 Oct 2020 09:24:07 +0000 (18:24 +0900)]
network: introduce link_serialize_ipv4ll()
Yu Watanabe [Fri, 2 Oct 2020 09:14:25 +0000 (18:14 +0900)]
network: introduce link_deserialize_ipv4ll()
Yu Watanabe [Fri, 2 Oct 2020 09:07:32 +0000 (18:07 +0900)]
network: introduce link_deserialize_dhcp4()
Yu Watanabe [Fri, 2 Oct 2020 08:53:18 +0000 (17:53 +0900)]
network: introduce network_verify_sr_iov()
Yu Watanabe [Fri, 2 Oct 2020 08:51:14 +0000 (17:51 +0900)]
network: move link_configure_sr_iov()
Yu Watanabe [Fri, 2 Oct 2020 08:48:59 +0000 (17:48 +0900)]
network: introduce network_verify_traffic_control()
Yu Watanabe [Fri, 2 Oct 2020 08:45:37 +0000 (17:45 +0900)]
network: move link_configure_traffic_control()
Yu Watanabe [Fri, 2 Oct 2020 08:37:54 +0000 (17:37 +0900)]
network: merge link_set_bridge_vlan() and br_vlan_configure()
Yu Watanabe [Fri, 2 Oct 2020 08:03:36 +0000 (17:03 +0900)]
network: move DUID related functions
Yu Watanabe [Fri, 2 Oct 2020 07:39:45 +0000 (16:39 +0900)]
network: move link_radv_enabled()
Yu Watanabe [Fri, 2 Oct 2020 07:35:54 +0000 (16:35 +0900)]
network: move link_dhcp4_server_enabled()
Yu Watanabe [Fri, 2 Oct 2020 07:30:23 +0000 (16:30 +0900)]
network: move link_ipv6_accept_ra_enabled()
Yu Watanabe [Fri, 2 Oct 2020 07:23:28 +0000 (16:23 +0900)]
network: unify link_ipv{4,6}_forward_enabled()
Yu Watanabe [Fri, 2 Oct 2020 07:09:25 +0000 (16:09 +0900)]
network: unify link_dhcp{4,6}_enabled()
Yu Watanabe [Fri, 2 Oct 2020 06:48:01 +0000 (15:48 +0900)]
network: move link_get_xxx_route_table()
Yu Watanabe [Fri, 2 Oct 2020 05:46:29 +0000 (14:46 +0900)]
network: manage address pools by OrderedSet
Yu Watanabe [Fri, 2 Oct 2020 05:38:22 +0000 (14:38 +0900)]
network: drop unused argument
Yu Watanabe [Fri, 2 Oct 2020 05:15:57 +0000 (14:15 +0900)]
network: move functions related to address pool
Yu Watanabe [Fri, 2 Oct 2020 05:01:59 +0000 (14:01 +0900)]
network: header cleanup
Yu Watanabe [Fri, 2 Oct 2020 04:50:36 +0000 (13:50 +0900)]
network: make several functions static
Yu Watanabe [Fri, 2 Oct 2020 04:39:02 +0000 (13:39 +0900)]
network: manage addresses from pool by Set