Thomas Haller [Tue, 7 Aug 2018 06:55:07 +0000 (08:55 +0200)]
link: fix type for link-config's "features" array of tristates
The "features" fields is parsed as a tristate value. The values
are thus not of type NetDevFeature enum but int. The NetDevFeature
enum is instead the index for the features array.
Adjust the type. In practice, this had no impact because NetDevFeature
enum commonly has size of int.
Also, don't use memset() 0xFF to initilize the int with -1. While
it works correctly in practice, it feels ugly.
Yu Watanabe [Tue, 7 Aug 2018 09:25:00 +0000 (18:25 +0900)]
test: cast values in proper type to suppress warnings
Follow-up for #9789.
Lennart Poettering [Tue, 7 Aug 2018 08:44:44 +0000 (10:44 +0200)]
Merge pull request #9817 from yuwata/shorten-error-logging
tree-wide: Shorten error logging and several code cleanups
Lennart Poettering [Tue, 7 Aug 2018 07:55:07 +0000 (09:55 +0200)]
Merge pull request #9744 from yuwata/fix-9737
Make RootImage= work with PrivateDevices=
Michael 'pbone' Pobega [Tue, 7 Aug 2018 07:41:49 +0000 (03:41 -0400)]
hwdb: redefine Lenovo ThinkPad X140e touchpad dimensions (#9818)
The default setup for the Lenovo ThinkPad X140e is 104x104mm, and the kernel
claims that it's 64x21. The default 104x104mm dimensions causes the vertical
axis to act oddly, causing random vertical jitters and higher vertical
sensitivity.
Measuring it showed that it was 74x32, and these touchpad dimensions provide
a better (if a little bit slower) experience but a consistent sensitivity
in all directions.
These values were obtained using the `touchpad-edge-detector` tool.
Lennart Poettering [Tue, 7 Aug 2018 07:39:26 +0000 (09:39 +0200)]
Merge pull request #9789 from filbranden/cmp1
Add new CMP(a, b) macro
Filipe Brandenburger [Sat, 4 Aug 2018 06:10:54 +0000 (23:10 -0700)]
systemctl: add support for --wait to is-system-running
This makes it possible to wait until boot is finished without having to poll
for this command repeatedly, instead using the syntax:
$ systemctl is-system-running --wait
Waiting is implemented by waiting for the StartupFinished signal to be posted
on the bus.
Register the matcher before checking for the property to avoid race conditions.
Tested by artificially delaying startup with a oneshot service and calling this
command, checked that it emitted `running` and exited with a 0 return code as
soon as the delay service completed startup.
Also tested that booting to degraded state unblocks the command.
Inserted a delay between getting the property and waiting for the signal and
confirmed this seems to work free of race conditions.
Updated the --help text (under --wait) and the man page to document the new
feature.
Yu Watanabe [Tue, 7 Aug 2018 06:48:37 +0000 (15:48 +0900)]
tree-wide: use returned value from log_*_errno()
Filipe Brandenburger [Tue, 7 Aug 2018 02:23:41 +0000 (19:23 -0700)]
dns-domain: use CMP() in dns_name_compare_func
Filipe Brandenburger [Tue, 7 Aug 2018 02:21:38 +0000 (19:21 -0700)]
resolve: use CMP() in dns_resource_record_compare_func
This function doesn't really implement ordering, but CMP() is still fine to use
there. Keep the comment in place, just update it slightly to indicate that.
Filipe Brandenburger [Thu, 2 Aug 2018 23:43:37 +0000 (16:43 -0700)]
tree-wide: Convert compare_func's to use CMP() macro wherever possible.
Looked for definitions of functions using the *_compare_func() suffix.
Tested:
- Unit tests passed (ninja -C build/ test)
- Installed this build and booted with it.
Filipe Brandenburger [Thu, 2 Aug 2018 23:00:53 +0000 (16:00 -0700)]
network: Use CMP() macro for comparison.
Follow up for PRs #9764 and #9760.
Filipe Brandenburger [Thu, 2 Aug 2018 21:37:42 +0000 (14:37 -0700)]
macros: add CMP(a, b) macro.
Macro returns -1, 0, 1 depending on whether a < b, a == b or a > b.
It's safe to use on unsigned types.
Add tests to confirm corner cases are properly covered.
Filipe Brandenburger [Tue, 7 Aug 2018 02:15:02 +0000 (19:15 -0700)]
macro: drop __extension__, reformat and reindent
Drop __extension__, since we don't use gcc -Wpedantic or -ansi.
Reformat code for spacing. Add spaces after commas almost everywhere.
Reindent code blocks in macro definitions, for consistency.
Yu Watanabe [Tue, 7 Aug 2018 01:14:30 +0000 (10:14 +0900)]
tree-wide: shorten error logging a bit
Continuation of
4027f96aa08c73f109aa46b89842ca0e25c9c0e9.
Yu Watanabe [Tue, 7 Aug 2018 01:13:44 +0000 (10:13 +0900)]
resolve: use _cleanup_ attribute
Yu Watanabe [Tue, 7 Aug 2018 01:11:56 +0000 (10:11 +0900)]
machine: use free_and_replace() and TAKE_PTR()
Yu Watanabe [Tue, 7 Aug 2018 01:10:12 +0000 (10:10 +0900)]
login: use free_and_replace() and TAKE_PTR()
Yu Watanabe [Tue, 7 Aug 2018 01:06:49 +0000 (10:06 +0900)]
initctl: do not ignore errors in function
Lennart Poettering [Mon, 6 Aug 2018 13:47:03 +0000 (15:47 +0200)]
machinectl: shorten error logging a bit
Franck Bui [Mon, 6 Aug 2018 09:31:04 +0000 (11:31 +0200)]
smack-util: use 'path' paremeter as is if it's already absolute in mac_smack_fix_at()
Zbigniew Jędrzejewski-Szmek [Mon, 6 Aug 2018 12:13:30 +0000 (14:13 +0200)]
Merge pull request #9792 from poettering/hashmap-mempool
minor hashmap fixes
Yu Watanabe [Thu, 2 Aug 2018 06:36:32 +0000 (15:36 +0900)]
resolve: treat some icmp errors as disconnected
Fixes #9773.
Yu Watanabe [Thu, 2 Aug 2018 06:41:48 +0000 (15:41 +0900)]
resolve: sort headers
Zbigniew Jędrzejewski-Szmek [Mon, 6 Aug 2018 05:58:50 +0000 (07:58 +0200)]
Merge pull request #9775 from yuwata/follow-up-9766
Yu Watanabe [Mon, 6 Aug 2018 05:02:28 +0000 (14:02 +0900)]
namespace: implicitly adds DeviceAllow= when RootImage= is set
RootImage= may require the following settings
```
DeviceAllow=/dev/loop-control rw
DeviceAllow=block-loop rwm
DeviceAllow=block-blkext rwm
```
This adds the following settings implicitly when RootImage= is
specified.
Fixes #9737.
Yu Watanabe [Mon, 6 Aug 2018 04:42:14 +0000 (13:42 +0900)]
core: introduce cgroup_add_device_allow()
Yu Watanabe [Sat, 28 Jul 2018 15:42:41 +0000 (00:42 +0900)]
core/namespace: drop mount points outside of root even if RootDirectory= is not set
Yu Watanabe [Sat, 28 Jul 2018 15:38:36 +0000 (00:38 +0900)]
core/namespace: drop conditions depends on `root` is empty or not
After
0722b359342d2a9f9e0d453875624387a0ba1be2, the variable `root`
is always set.
Yu Watanabe [Thu, 2 Aug 2018 07:54:27 +0000 (16:54 +0900)]
resolve: fix error handling of dns_name_is_valid()
Yu Watanabe [Thu, 2 Aug 2018 07:32:42 +0000 (16:32 +0900)]
man: mention that Hostname= for DHCP must be a valid DNS domain name
Yu Watanabe [Thu, 2 Aug 2018 07:31:10 +0000 (16:31 +0900)]
network: DHCP: ignore error in setting hostname when it is given by uname()
C.f. #9759.
Yu Watanabe [Thu, 2 Aug 2018 07:28:44 +0000 (16:28 +0900)]
network: use free_and_replace()
Yu Watanabe [Thu, 2 Aug 2018 07:28:23 +0000 (16:28 +0900)]
network: also check that Hostname= is a valid DNS domain name
Lennart Poettering [Fri, 3 Aug 2018 16:11:36 +0000 (18:11 +0200)]
Merge pull request #8822 from fbuihuu/rfc-tmpfiles-safe-upstream
Make tmpfiles safe
Lennart Poettering [Fri, 3 Aug 2018 15:34:40 +0000 (17:34 +0200)]
man: include libsystemd-pkgconfig.xml in a few more man pages
for some reason this was forgotten for a couple of sd_bus man pages,
let's fix that.
Lennart Poettering [Fri, 3 Aug 2018 14:48:53 +0000 (16:48 +0200)]
test-resolved: follow coding style, use fopen() with 'e'
Lennart Poettering [Fri, 3 Aug 2018 14:46:26 +0000 (16:46 +0200)]
hashmap: add an explicit assert() for detecting when objects migrated between threads
When clients don't follow protocol and use the same object from
different threads, then we previously would silently corrupt memory.
With this assert we'll fail with an assert(). This doesn't fix anything
but certainly makes mis-uses easier to detect and debug.
Triggered by https://bugzilla.redhat.com/show_bug.cgi?id=1609349
Lennart Poettering [Fri, 3 Aug 2018 14:45:21 +0000 (16:45 +0200)]
hashmap: add an environment variable to turn off the memory pool used by hashmaps
Triggered by https://bugzilla.redhat.com/show_bug.cgi?id=1609349
Lennart Poettering [Fri, 3 Aug 2018 14:43:30 +0000 (16:43 +0200)]
man: be more explicit about thread safety of sd_journal
Triggered by https://bugzilla.redhat.com/show_bug.cgi?id=1609349
This adds two generic paragaphs we include via xinclude. One is the
"strict" version, which contains wording saying that we are thread
agnostic and what that means. And the other is the "safe" version, for
the cases we provide fully safety.
Let's then change most man pages to use either of these generic
paragraphs. With one exception: man/sd_journal_get_catalog.xml contains
both kinds of function, we hence use manual wording.
Lennart Poettering [Fri, 3 Aug 2018 14:41:42 +0000 (16:41 +0200)]
update TODO
Zbigniew Jędrzejewski-Szmek [Fri, 3 Aug 2018 11:32:01 +0000 (13:32 +0200)]
Merge pull request #9791 from poettering/user-runtime-dir-fixes
user-runtime-dir@.service fixes
Lennart Poettering [Fri, 3 Aug 2018 11:11:18 +0000 (13:11 +0200)]
Merge pull request #9787 from yuwata/dns-over-tls-log
DNS-over-TLS(openssl): fix error handling
Lennart Poettering [Fri, 3 Aug 2018 08:45:31 +0000 (10:45 +0200)]
units: assign user-runtime-dir@.service to user-%i.slice
This service won't use much resources, but it's certainly nicer to see
it attached th the user's slice along with user@.service, so that
everything we run for a specific user is properly bound into one unit.
Lennart Poettering [Fri, 3 Aug 2018 08:42:09 +0000 (10:42 +0200)]
units: order user-runtime-dir@.service after systemd-user-sessions.service
We use systemd-user-sessions.service as barrier when to allow login
sessions. With this patch user@.service is ordered after that too, so
that any login related code (which user-runtime-dir@.service is) is
guaranteed to run after the barrier, and never before.
Lennart Poettering [Thu, 2 Aug 2018 18:57:56 +0000 (20:57 +0200)]
units: make sure user-runtime-dir@.service is Type=oneshot
We order user@.service after it, hence we need to properly know when it
finished starting up.
Lennart Poettering [Thu, 2 Aug 2018 18:56:34 +0000 (20:56 +0200)]
user-runtime-dir: downgrade a few log messages to LOG_DEBUG that we ignore
As the comments already say it might be quite likely that
$XDG_RUNTIME_DIR is not set up as mount, and we shouldn't complain about
that.
Moreover, let's make this idempotent, so that a runtime dir that is
already gone and is removed again doesn't cause failure.
Yu Watanabe [Thu, 2 Aug 2018 22:18:43 +0000 (07:18 +0900)]
resolve: openssl: make dnstls_stream_{write,read}() may return zero
Yu Watanabe [Thu, 2 Aug 2018 21:34:19 +0000 (06:34 +0900)]
resolve: fix error handling of SSL_shutdown()
Yu Watanabe [Thu, 2 Aug 2018 21:29:38 +0000 (06:29 +0900)]
resolve: fix typo and coding style cleanups
Yu Watanabe [Thu, 2 Aug 2018 21:26:58 +0000 (06:26 +0900)]
resolve: clear error queue before calling SSL_*()
Lennart Poettering [Thu, 2 Aug 2018 18:05:51 +0000 (20:05 +0200)]
man: document that 'nofail' also has an effect on ordering
Prompted by #9765
Lennart Poettering [Thu, 2 Aug 2018 15:07:03 +0000 (17:07 +0200)]
Merge pull request #9776 from keszybz/sd-bus-docs
More man pages for sd-bus and related changes
Yu Watanabe [Thu, 2 Aug 2018 13:38:22 +0000 (22:38 +0900)]
resolve: fix error handling of dns_stream_read()
Zbigniew Jędrzejewski-Szmek [Thu, 2 Aug 2018 13:53:05 +0000 (15:53 +0200)]
Merge pull request #9764 from yuwata/hash_ops-cleanups
Hash ops cleanups
Zbigniew Jędrzejewski-Szmek [Thu, 2 Aug 2018 08:38:51 +0000 (10:38 +0200)]
man: add sd_bus_message_rewind(3)
Zbigniew Jędrzejewski-Szmek [Wed, 1 Aug 2018 22:00:15 +0000 (00:00 +0200)]
man: document sd_bus_slot_get_bus in sd_bus_slot_ref(3)
Similar reasoning as for sd_bus_message_get_bus().
Zbigniew Jędrzejewski-Szmek [Wed, 1 Aug 2018 21:56:36 +0000 (23:56 +0200)]
man: add sd_bus_slot_set_description(3)
Zbigniew Jędrzejewski-Szmek [Wed, 1 Aug 2018 21:41:49 +0000 (23:41 +0200)]
man: add sd_bus_slot_set_userdata(3)
Zbigniew Jędrzejewski-Szmek [Wed, 1 Aug 2018 15:27:31 +0000 (17:27 +0200)]
man: add sd_bus_message_set_expect_reply(3)
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 15:47:17 +0000 (17:47 +0200)]
man: document sd_bus_message_get_bus() in sd_bus_message_new(3)
It's not a particularly obvious place, but it's a trivial function that isn't
worth a man page of its own, and it doesn't fit anywhere else either.
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 14:33:02 +0000 (16:33 +0200)]
man: add sd_bus_message_verify_type(3)
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 13:39:46 +0000 (15:39 +0200)]
sd-bus: verify destination and sender values when setting
We would verify destination e.g. in sd_bus_message_new_call, but allow setting
any value later on with sd_bus_message_set_destination. I assume this check was
omitted not on purpose.
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 12:58:41 +0000 (14:58 +0200)]
man: add sd_bus_message_get_type(3)
sd_bus_message{get_type,is_signal,is_method_call,is_method_error} get one man
page.
sd_bus_message_{set,get}_{destination,path,interface,member,sender} are put in
the second one.
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 12:15:50 +0000 (14:15 +0200)]
man: add sd_bus_slot_ref(3)
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 12:07:02 +0000 (14:07 +0200)]
man: document sd_bus_message_new_method_return
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 08:32:20 +0000 (10:32 +0200)]
meson: print stats in check-api-docs
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 07:56:43 +0000 (09:56 +0200)]
man: document *_with_description functions
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 07:03:04 +0000 (09:03 +0200)]
man: add sd_bus_message_new(3)
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 06:24:45 +0000 (08:24 +0200)]
man: move more examples to stand-alone files and use 2-space indentation consistenty
Moving them out makes it easier to run them through a compiler, use automatic
indentation, and opens the possibility to provide a download link in the
future. I verified that all examples compile cleanly.
(2-space indentation is used because the examples are already significantly
indented in the man page, and we need to keep them narrow so that they display
well on standard terminals.)
Zbigniew Jędrzejewski-Szmek [Fri, 27 Jul 2018 06:06:07 +0000 (08:06 +0200)]
man: clarify what can be NULL in an sd_bus_unrefp call
Confusingly, the argument is called 'bus' in all cases. Let's not give people
the idea to call sd_bus_unrefp(NULL).
Zbigniew Jędrzejewski-Szmek [Thu, 26 Jul 2018 18:00:36 +0000 (20:00 +0200)]
man: add sd_bus_message_new_call(3)
Zbigniew Jędrzejewski-Szmek [Tue, 24 Jul 2018 21:23:29 +0000 (23:23 +0200)]
man: add sd_bus_message_new_signal(3)
Yu Watanabe [Tue, 31 Jul 2018 16:18:57 +0000 (01:18 +0900)]
basic: use FAMILY_ADDRESS_SIZE() macro in hash_ops for in_addr_data
Yu Watanabe [Tue, 31 Jul 2018 16:15:23 +0000 (01:15 +0900)]
network: make compare functions safe
As the variable 'line' is unsigned.
Zbigniew Jędrzejewski-Szmek [Thu, 2 Aug 2018 07:50:39 +0000 (09:50 +0200)]
Merge pull request #9624 from poettering/service-state-flush
flush out ExecStatus structures when a new service cycle begins
Yu Watanabe [Wed, 1 Aug 2018 01:42:49 +0000 (10:42 +0900)]
network: add more log messages in configuring DHCP6 client
Yu Watanabe [Wed, 1 Aug 2018 01:35:17 +0000 (10:35 +0900)]
network: add more log messages in configuring DHCP4 client
Yu Watanabe [Thu, 2 Aug 2018 03:54:50 +0000 (12:54 +0900)]
Merge pull request #9770 from keszybz/etc-resolved-no-address
Slightly more efficient handling of /etc/hosts blacklist entries
Zbigniew Jędrzejewski-Szmek [Wed, 1 Aug 2018 10:41:54 +0000 (12:41 +0200)]
resolved: change error handling for manager_etc_hosts_read()
The choice what errors to ignore is left to the caller, and the caller is
changed to ignore all errors.
On error, previously read data is kept. So if e.g. an oom error happens, we
will continue to return slightly stale data instead of pretending we have no
entries for the given address. I think that's better, for example when
/etc/hosts contains some important overrides that external DNS should not be
queried for.
Zbigniew Jędrzejewski-Szmek [Tue, 31 Jul 2018 13:09:13 +0000 (15:09 +0200)]
resolved: keep addresses mapped to ::0 in a separate set
We'd store every 0.0.0.0 and ::0 entry as a structure without any addresses
allocated. This is a somewhat common use case, let's optimize it a bit.
This gives some memory savings and a bit faster response time too:
'time build/test-resolved-etc-hosts hosts' goes from 7.7s to 5.6s, and
memory use as reported by valgrind for ~10000 hosts is reduced
==18097== total heap usage: 29,902 allocs, 29,902 frees, 2,136,437 bytes allocated
==18240== total heap usage: 19,955 allocs, 19,955 frees, 1,556,021 bytes allocated
Also rename 'suppress' to 'found' (with reverse meaning). I think this makes
the intent clearer.
Zbigniew Jędrzejewski-Szmek [Tue, 31 Jul 2018 09:01:21 +0000 (11:01 +0200)]
test-resolved-etc-hosts: add tests for /etc/hosts parsing
Calling 'build/test-resolved-etc-hosts filename' parses just that file.
This is useful to test against https://hosts.ubuntu101.co.za/hosts.
Zbigniew Jędrzejewski-Szmek [Tue, 31 Jul 2018 08:01:46 +0000 (10:01 +0200)]
resolved: put /etc/hosts hashmaps in a structure and pass that around
This hides the details of juggling the two hashmaps from the callers a bit.
It also makes memory management a bit easier, because those two hashmaps share
some strings, so we can only free them together.
etc_hosts_parse() is made responsible to free the half-filled data structures
on error, which makes the caller a bit simpler.
No functional change. A refactoring to prepare for later changes.
Zbigniew Jędrzejewski-Szmek [Tue, 31 Jul 2018 14:06:43 +0000 (16:06 +0200)]
test-nss-files: simplify module name handling
- drop compatibility with autotools (/.libs/ directory)
- don't special-case "libnss_dns", just try build/libnss_foo.so.2 and libnss_foo.so.2.
This makes it possible to call e.g. build/test-nss files google.com.
Zbigniew Jędrzejewski-Szmek [Tue, 31 Jul 2018 07:44:11 +0000 (09:44 +0200)]
meson: drop parens when appending to list
Meson does not care either way, so let's use the simpler syntax. And files()
already gives a list, so nesting this in a list wouldn't be necessary even
if meson did not flatten everything.
Lennart Poettering [Tue, 31 Jul 2018 08:52:34 +0000 (10:52 +0200)]
Merge pull request #9760 from yuwata/resolve-etc-hosts-cleanup
resolve: several cleanups of handing /etc/hosts
Evgeni Golov [Mon, 30 Jul 2018 11:56:07 +0000 (13:56 +0200)]
udev: net_id: document predictable names for SR-IOV virtual devices
Yu Watanabe [Tue, 31 Jul 2018 07:12:13 +0000 (16:12 +0900)]
resolve: support address with ifname in /etc/hosts
Yu Watanabe [Tue, 31 Jul 2018 06:46:28 +0000 (15:46 +0900)]
resolve: use in_addr_data type for storing address
Yu Watanabe [Tue, 31 Jul 2018 06:45:38 +0000 (15:45 +0900)]
basic: introduce in_addr_data_hash_ops
Franck Bui [Mon, 16 Jul 2018 15:57:41 +0000 (17:57 +0200)]
path-util: make use of path_join() in path_make_absolute_cwd()
Franck Bui [Fri, 13 Apr 2018 13:32:25 +0000 (15:32 +0200)]
tmpfiles: add more tests
Franck Bui [Tue, 20 Mar 2018 07:58:48 +0000 (08:58 +0100)]
tmpfiles: don't follow unsafe transitions in path_set_*()
Since all path_set_*() helpers don't follow symlinks, it's possible to use
chase_symlinks(CHASE_NOFOLLOW) flag to both open the files specified by the
passed paths and check their validity (unlike their counterpart fd_set_*()
helpers).
Franck Bui [Thu, 26 Apr 2018 20:46:55 +0000 (22:46 +0200)]
fs-util: add new CHASE_NOFOLLOW flag to chase_symlinks()
This flag mimics what "O_NOFOLLOW|O_PATH" does for open(2) that is
chase_symlinks() will not resolve the final pathname component if it's a
symlink and instead will return a file descriptor referring to the symlink
itself.
Note: if CHASE_SAFE is also passed, no safety checking is performed on the
transition done if the symlink would have been followed.
Franck Bui [Fri, 27 Apr 2018 16:17:32 +0000 (18:17 +0200)]
tmpfiles: make create_fifo() safe
Franck Bui [Fri, 27 Apr 2018 16:20:38 +0000 (18:20 +0200)]
fs-util: introduce mkfifoat_atomic() helper
Franck Bui [Mon, 30 Jul 2018 13:10:49 +0000 (15:10 +0200)]
fileio: make tempfn_random_child() accept empty string as path
In this case it simply returns the random generated filename with anything
prefixed.
Franck Bui [Fri, 27 Apr 2018 16:11:26 +0000 (18:11 +0200)]
tmpfiles: introduce create_fifo()
Franck Bui [Thu, 26 Apr 2018 13:45:17 +0000 (15:45 +0200)]
tmpfiles: introduce empty_directory()
Franck Bui [Fri, 27 Apr 2018 09:51:14 +0000 (11:51 +0200)]
tmpfiles: introduce create_directory() and create_subvolume() and make them safe