Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 09ff0aadf9 backlight: support to specify percentage of minimum brightness
Closes #29328.
2023-10-06 11:21:20 +09:00
Yu Watanabe 4f4d7911cd man: fix typo
Follow-up for a121b331e3.
2023-10-06 11:18:47 +09:00
Yu Watanabe 8c35a97758 core: fix typo 2023-10-06 11:15:30 +09:00
Yu Watanabe 8af8f9e891 Merge pull request #29417 from yuwata/sd-journal-cleanups-for-generic-array-bisect-plus-one
sd-journal: cleanups for generic_array_bisect_plus_one()
2023-10-06 11:04:07 +09:00
Yu Watanabe 77db35bf10 sd-journal: make journal_file_next_entry() always return the nearest entry object
Previously, if the input offset 'p' does not point to an entry object,
the function returns the next of the nearest entry object on
DIRECTION_DOWN, as generic_array_bisect() already returns the nearest
entry object.
2023-10-06 09:57:27 +09:00
Yu Watanabe 80f96c0ce1 sd-journal: reduce number of calls generic_array_bisect_plus_one()
If the first call of generic_array_bisect_plus_one() provides the same
offset, then it is not necessary to call the next one, as we already
know the entry object is also liked to the input data object.

Also, this make the function reuse the object returned by
generic_array_bisect_plus_one().

No functional change, just optimization.
2023-10-06 09:55:04 +09:00
Yu Watanabe 20c45e5784 sd-journal: drop unnecessary re-read of data object
Follow-up for ec50313d4e.

The function generic_array_bisect_plus_one() does not read any new data
objects, so the data object is still valid, and not necessary to re-read it.
2023-10-06 09:55:04 +09:00
Yu Watanabe d67078b4a3 sd-journal: rewrite conditions for test result and direction
No functional change, just refactoring. Hopefully the condition is more
descriptive now.
2023-10-06 09:55:00 +09:00
Yu Watanabe 3b0ae13bbf test: add reproducer for SIGBUS issue caused by journal truncation
The added code fails without the previous commit.

For issue #24320.
2023-10-06 09:24:55 +09:00
Yu Watanabe 46e98dfcc7 journal-file-util: do not fail when journal_file_set_offline() called more than once
Previously, if journal_file_set_offline() is called twice with 'wait = false',
the second call triggered segfaults, as the offline_state is OFFLINE_DONE,
and journal_file_set_offline_thread_join() tries to call pthread_join()
with NULL.
2023-10-05 19:15:55 +09:00
Yu Watanabe ff95b60d1a test: modernize test-journal-flush 2023-10-05 19:15:55 +09:00
Yu Watanabe 6b524d70e3 test-network: add tests for [DHCPv4] RequestAddress= setting 2023-10-05 11:14:29 +09:00
Yu Watanabe b93bf1bf9f network: introduce [DHCPv4] RequestAddress= setting
This may be useful when requesting a specific address.

Closes #29437.
2023-10-05 06:58:08 +09:00
Yu Watanabe 5d896defeb network: skip to set request address when anonymized
In sd-dhcp-client.c, we do not set the option in the DHCPDISCOVER
message when anonymized, and the specified address is ignored
anyway. So, this does not change the behavior, but suppress
misleading debugging log in dhcp4_set_request_address().
2023-10-05 06:56:51 +09:00
Yu Watanabe 0073f6c623 mmap-cache: each Window is owned by MMapFileDescriptor
And MMapFileDescriptor always references MMapCache, hence it is not
necessary Window to have a reference to MMapCache.

This also renames the list fields 'by_fd' -> 'windows', to make them
consistent with the name of the head.

No functional change, just refactoring.
2023-10-04 19:53:27 +09:00
Yu Watanabe 40f5e6a941 mmap-cache: merge mmap_cache_fd_get() with try_context() and find_mmap()
The post operations (attach the found or new window to a context, update
the keep_always flag, and calculate the address) in three steps are
equivalent, and the two searching logics are quite simple.
Let's merge them to decrease the total lines.

No functional change, just refactoring.
2023-10-04 19:53:27 +09:00
Yu Watanabe 81598f5ead mmap-cache: merge window_matches() and window_matches_fd()
Let's drop meaningless optimization, and always check if the window is
owned by the expected fd.
2023-10-04 19:53:27 +09:00
Yu Watanabe 1ed867d309 mmap-cache: merge mmap_try_harder() with make_room()
The function make_room() is short and only used by mmap_try_harder().
Let's merge them with short comments.

No functional change, just refactoring.
2023-10-04 19:53:27 +09:00
Yu Watanabe 0096914023 sd-journal: drop unused argument for generic_array_bisect_plus_one() 2023-10-04 17:36:14 +09:00
Yu Watanabe b5c8f47102 test-network: test SIP servers obtained by DHCP
For issue #29145.
2023-10-04 08:41:26 +02:00
Yu Watanabe 0558c86c78 sd-netlink: use secure_getenv()
Follow-up for 52afaee74b.

Fixes CID#1522326.
2023-10-04 07:48:30 +02:00
Yu Watanabe 12696a7dba po: fix invalid printf format specifier 2023-10-04 09:16:11 +09:00
Yu Watanabe fcdd21ec6a tree-wide: fix typo 2023-10-04 08:58:10 +09:00
Yu Watanabe 31438511e0 sd-journal: drop unnecessary re-read of object
This reverts the following commits.
- a1640191b4
- 231741d355

These were done by my misunderstanding of the mmap cache behavior.

Also, this updates the comments added by
df04b9ed86.
2023-10-03 22:17:34 +01:00
Yu Watanabe fcf17d693c man: update the list of ignored options by Anonymize=yes
Closes #29362.
2023-10-03 10:02:02 +01:00
Yu Watanabe 7233c679d4 fuzz: limit size for fuzz-manager-serialize
Fixes #29357 and oss-fuzz#62756
(https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62756).
2023-10-02 14:23:34 +01:00
Yu Watanabe 185e201690 journalctl: find boot ID more gracefully in corrupted journal
In discover_next_boot(), first we find a new boot ID based on the value
stored in the entry object. Then, find the tail (or head when we are going
upwards) entry of the boot based on the _BOOT_ID= field data.

If boot IDs of an entry in the entry object and _BOOT_ID field data
are inconsistent, which may happen on corrupted journal, then previously
discover_next_boot() failed with -ENODATA.

This makes the function check if the two boot IDs in each entry are
consistent, and skip the entry if not.

Fixes the failure of `journalctl -b -1` for 'truncated' journal:
https://github.com/systemd/systemd/pull/29334#issuecomment-1736567951
2023-10-02 10:59:33 +09:00
Yu Watanabe d287ece7f1 test: split test-tables into three
Let's drop dependency to libjournal_core and libudevd_core from
test-tables.
2023-10-02 10:52:45 +09:00
Yu Watanabe 1d3ef11dfe journal: move several tests to libsystemd/sd-journal
This also renames test-journal-xyz for journald (rather than sd-journal)
to test-journald-xyz.
2023-10-02 10:52:45 +09:00
Yu Watanabe f7b349e88d journal-remote: drop dependencies to journald
Now journal-remote can be built without libjournal_core.
2023-10-02 10:52:45 +09:00
Yu Watanabe 1e09470303 journald: move and rename journal/managed-journal-file.[ch] -> shared/journal-file-util.[ch]
The files are used by both journald and journal-remote.
Let's move them to src/shared.
2023-10-02 10:52:45 +09:00
Yu Watanabe 45c0ecba2d journald: drop ManagedJournalFile
The ManagedJournalFile object is a trivial wrapper of JournalFile.
Let's drop it, and also drop 'managed_' prefix from the functions.
2023-10-02 10:52:45 +09:00
Yu Watanabe 5f6b79b73b journald: split-out closing journal files from managed_journal_file_open()
No functional change, just refactoring and preparation for later
commits.
2023-10-02 10:52:45 +09:00
Yu Watanabe 34d17ac128 journald: do not close all files stored in Server.deferred_closes
Just before the call of managed_journal_file_open(), we already called
server_vacuum_deferred_closes(), so there is a room to store the file.
2023-10-02 10:52:45 +09:00
Yu Watanabe 4ed95fafad network: set maximum length to be read by read_full_file_full()
Fixes #29264 and oss-fuzz#62556
(https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62556).
2023-10-02 10:36:43 +09:00
Yu Watanabe 7e2a5fbd85 fileio: make read_full_file_full() usable with size and READ_FULL_FILE_UNBASE64
When READ_FULL_FILE_UNBASE64 (or READ_FULL_FILE_UNHEX) is specified,
setting size argument by caller is difficult, as it is hard to estimate
the encoded length.

This makes when size is specified with decoding option, let's read file
more, and check decoded size later with the specified size.
2023-10-02 10:36:43 +09:00
Yu Watanabe b05a88c1ae meson: drop unused home_includes 2023-10-01 10:28:55 +02:00
Yu Watanabe 52afaee74b sd-netlink: make the default timeout configurable by environment variable
On normal systems, triggering a timeout should be a bug in code or
configuration error, so I do not think we should extend the default
timeout. Also, we should not introduce a 'first class' configuration
option about that. But, making it configurable may be useful for cases
such that "an extremely highly utilized system (lots of OOM kills,
very high CPU utilization, etc)".

Closes #25441.
2023-10-01 12:41:10 +09:00
Yu Watanabe f5c615889a sd-netlink: make calc_elapse() return USEC_INFINITY when no timeout is requested
Then, timout_compare() becomes simplar, the timeout value becomes
consistent with what sd_netlink_get_timeout() provides.

This also drop unnecessary assignment of reply_callback.timeout after
the slot is dropped from the prioq.
2023-10-01 12:41:10 +09:00
Yu Watanabe 8fc4d1be77 mmap-cache: rebreak lines 2023-10-01 06:35:02 +09:00
Yu Watanabe b38977e5d3 mmap-cache: modernize free functions
No functional change, just refactoring.
2023-10-01 06:35:02 +09:00
Yu Watanabe 8ff0f36e00 mmap-cache: check if mmap protection mode is consistent when fd is already managed
Otherwise, MMapFileDescriptor with an unexpected protection mode may be
returned.
2023-10-01 06:35:02 +09:00
Yu Watanabe 8926a6a467 mmap-cache: modernize mmap_cache_add_fd()
- use hashmap_ensure_put(),
- use _cleanup_free_ attribute,
- use structured initializer.
2023-10-01 06:35:02 +09:00
Yu Watanabe 397caa8122 mmap-cache: use structured initializer 2023-10-01 06:35:02 +09:00
Yu Watanabe d37eeabc4f sd-journal: merge journal_file_next_entry_for_data() with generic_array_get_plus_one()
Because journal_file_next_entry_for_data() provides the first entry, while
journal_file_next_entry() actually provides the next entry of the input,
this also renames it to journal_file_move_to_entry_for_data().

Also, previously, on DIRECTION_UP the function did not fall back to the
'extra' entry when all entries linked in the chained array are broken.
This also fixes the issue, and now it fall back to the extra entry.
2023-09-30 20:10:15 +09:00
Yu Watanabe 3a23e41883 sd-journal: add/update comments 2023-09-30 20:10:15 +09:00
Yu Watanabe f85e79d3e5 sd-journal: add missing 'error' handling
When we reach an empty array, there are at least two possibilities:
- journal file is corrupted,
- invalid index is requested.

We cannot distinguish them here, let's simply return earlier.
2023-09-30 20:10:15 +09:00
Yu Watanabe fe6f2bd8a6 sd-journal: fix calculation of number of 'total' entries in the chained arrays
If there's corruption and we are going upwards, then the 'total'
must be decreased when we go to the previous array. However,
previously, we wrongly kept or increased the number. This fixes
the behavior.
2023-09-30 20:10:15 +09:00
Yu Watanabe b63f09e4ee sd-journal: merge two bump_entry_array() calls
No functional changes, just refactoring.
2023-09-30 20:10:15 +09:00
Yu Watanabe b7264911aa sd-journal: make bump_entry_array() return positive when a valid offset found
When it returns 0 offset, then the subsequent
journal_file_move_to_object() will fail. Let's return
generic_array_get() earlier in such situation.
2023-09-30 20:10:15 +09:00
Yu Watanabe eb6ba87344 sd-journal: drop redundant re-read of entry array object
This effectively reverts d9b61db922.

In the do-while loop, we do not read any other entry array object, hence
the current object is always in the mmap cache and not necessary to re-read it.
2023-09-30 20:10:15 +09:00
Yu Watanabe bb83c7c633 test: add test case that journal file with unreferenced _BOOT_ID data
For issue #29275.
2023-09-26 13:26:22 +09:00
Yu Watanabe 304cb08f84 sd-journal: always fallback to find entry by realtime
Consider the following situation:
- There are two journal files (x and y), that contains entries for two boots (X and Y).
- The journal file x contains entries of the boot X, and y contains
  entries of Y.
- Nevertheless x does not contains entries of boot Y, it contains
  the _BOOT_ID= data object of boot Y. Of course, the data object is not
  referenced by any entries in the journal file x.

In such situation, when the current location of sd_journal is the head
of journal y, that is, the first entry of the boot Y,
sd_journal_previous() failed without this change, and
'journalctl --boot -NUM' for boot X failed.

Fixes #29275.
2023-09-26 13:26:22 +09:00
Yu Watanabe 7c1784db83 test: add tests for journal_find_boot_by_offset() and friends 2023-09-26 13:26:22 +09:00
Yu Watanabe 0141b2143d logs-show: use sd_journal_step_one() 2023-09-26 13:26:22 +09:00
Yu Watanabe 8081939d1d logs-show: move journal_find_boot_by_offset() and friends from journalctl.c 2023-09-26 13:26:22 +09:00
Yu Watanabe f5257facb9 journalctl: several cleanups for find_boot_by_offset()/_by_id()
- their names are prefixed with "journal_",
- make them not directly use global variables,
- simplifies the loop counter in find_boot_by_offset().
2023-09-26 13:26:22 +09:00
Yu Watanabe 1eede15851 sd-journal: refuse to write entry without boot ID
To make journal entries always contain valid boot ID.
2023-09-26 13:26:22 +09:00
Yu Watanabe b761ae0fca sd-journal: boot_id is always non-NULL
The two callers of journal_file_append_entry_internal() always pass
non-NULL boot ID.
2023-09-26 13:26:22 +09:00
Yu Watanabe 6ea51363c8 sd-journal: also verify tail_entry_boot_id and friends in journal_file_verify_header()
Then, we can drop the redundant check in journal_file_read_tail_timestamp().
2023-09-26 13:26:22 +09:00
Yu Watanabe 1fa2ebbec4 test: fix header verification 2023-09-26 13:26:22 +09:00
Yu Watanabe f9edbb80e9 sd-dhcp-client: split out client_parse_message()
No functional change, just refactoring and preparation for later
commits.
2023-09-23 01:38:21 +09:00
Yu Watanabe db849df5a1 sd-dhcp-client: introduce dhcp_lease_unref_and_replace() 2023-09-23 01:38:21 +09:00
Yu Watanabe 8fc725052a sd-dhcp-client: do not set fallback subnet mask if it is already set 2023-09-23 01:38:21 +09:00
Yu Watanabe 2ff1e23036 sd-dhcp-client: split out client_enter_requesting()
No functional change, just refactoring and preparation for later
commits.
2023-09-23 01:38:21 +09:00
Yu Watanabe 525717b87c sd-dhcp-client: split out client_enter_bound()
No functional change, just refactoring and preparation for later
commits.
2023-09-23 01:38:21 +09:00
Yu Watanabe 6197db53ba sd-ndisc: make sd_ndisc return time values in usec
This also introduces sd_ndisc_router_get_lifetime_timestamp() and
friends that return timestamp rather than timespan.
2023-09-23 01:34:56 +09:00
Yu Watanabe c650d4cdef sd-journal: refuse entry objects with an empty boot ID
Otherwise, e.g. sd_journal_get_monotonic_usec() return an empty boot ID
when called for such a broken entry object.

Such a broken object may be stored when the system was not cleanly shutdown.

Fixes #29167.
2023-09-22 08:05:53 +02:00
Yu Watanabe 3231f624e6 sd-ndisc: rename function arguments for storing results 2023-09-22 02:17:31 +09:00
Yu Watanabe 60415c1360 network: split out link_get_address_states()
No functional change, just refactoring and preparation for later
commits.
2023-09-21 11:31:43 +01:00
Yu Watanabe afb81a0c05 sd-event: drop unnecessary call of sd_event_now() when requested relative time is zero 2023-09-21 11:03:37 +02:00
Yu Watanabe 511d96d3b7 sd-dhcp-client: use unaligned_be32_sec_to_usec()
Note, previously, we set 1 second if the time value is zero.
But the adjustment is dropped now, as for the lifetime we have explicit
check that the message has non-zero lifetime, and for T1 and T2 we have
better adjustment in client_set_lease_timeouts().
2023-09-21 09:52:03 +01:00
Yu Watanabe d08ff4506c sd-device: include missing alloc-util.h
unref_and_replace_full() is defined in alloc-util.h.
2023-09-21 14:28:55 +08:00
Yu Watanabe 8ff992d1a2 test-ndisc-ra: add tests for recently added functions 2023-09-21 04:01:24 +09:00
Yu Watanabe eca280c8c0 sd-radv: make sd_radv always take timespan in usec 2023-09-21 04:01:14 +09:00
Yu Watanabe 394fac52d0 sd-dhcp6-client: introduce sd_dhcp6_lease_get_t1() and friends 2023-09-21 03:59:00 +09:00
Yu Watanabe 9132cbd5ad sd-dhcp6-client: use be32_sec_to_usec() at more places 2023-09-21 03:59:00 +09:00
Yu Watanabe d8ec95c7ff sd-dhcp6-client: rework IA_NA or IA_PD getters
This splits sd_dhcp6_lease_get_address() into small pieces,
and introduce FOREACH_DHCP6_ADDRESS() macro.
Also, the lifetimes provided by _get_address_lifetime() are now in usec,
and _get_address_lifetime_timestamp() provides timestamp.

The same change is also applied for IA_PD.
2023-09-21 03:59:00 +09:00
Yu Watanabe fb70992d39 sd-dhcp6-client: introduce sd_dhcp6_lease_has_pd_prefix() and friend
No functional change, just refactoring.
2023-09-21 03:59:00 +09:00
Yu Watanabe 4aa33df845 sd-journal: also clear saved direction on seek
Otherwise, sd_journal_previous() -> real_journal_next(DIRECTION_UP) ->
next_beyond_location() wrongly handles that previously we hit EOF of
the file, and returns 0 without finding a matching entry.

Fixes #29216.
2023-09-21 01:59:21 +09:00
Yu Watanabe 45689fd265 test: add more testcases for seeking journal entries
This is mostly for issue #29216.
2023-09-21 01:58:43 +09:00
Yu Watanabe 836809d179 test: check return value of sd_journal_next() and friends 2023-09-21 01:57:55 +09:00
Yu Watanabe a00076113b sd-dhcp-server: store lifetime and friends in usec_t 2023-09-20 05:04:03 +09:00
Yu Watanabe ca515c961b libsystemd-network: introduce several helper functions to handle time values
These will be used in later commits.
2023-09-20 05:04:03 +09:00
Yu Watanabe d5adff70c0 test-network: add test for multiple IPv6 null addresses
This also merges test_address_null() into test_address_static().
2023-09-18 10:22:08 +09:00
Yu Watanabe 6174dc7d96 network: allow to configure multiple IPv6 null addresses with different prefix length
Previously, even if a .network file contains multiple IPv6 null
addresses with different prefix length, only the first setting is applied,
as the remainings are deduped in network_drop_invalid_addresses().

Even though the kernel allows us to change the prefix length of an existing
IPv6 address, we cannot safely change the prefix length of an address
that is originally requested as a null address, as the prefix of the
address may conflict with other addresses if we change it.

We already prohibit to change the prefix length of an existing IPv6
address that is originally requested as a null address. So, we can
safely allow to configure multiple IPv6 addresses from null addresses by
relaxing the dedup logic. The dedup is govern by the hash_ops. This adds
a special handling for IPv6 null addresses.
2023-09-18 10:22:08 +09:00
Yu Watanabe 381e3cc68b network: rename address_prefix() -> address_ipv4_prefix()
This also makes the function use in4_addr_is_set() and in4_addr_mask()
for readability.
2023-09-18 10:19:51 +09:00
Yu Watanabe 52af8e5ef9 network: drop _fallthrough_ in address_{hash,compare}_func()
No functional change, just refactoring and preparation for later commit.
2023-09-18 10:16:53 +09:00
Yu Watanabe 345ed22ef9 Merge pull request #29197 from takaswie/topic/hwdb/ieee1394-unit-function
hwdb: ieee1394 unit function: fulfill Weiss Engieering FireWire models
2023-09-17 07:23:38 +02:00
Yu Watanabe b9962da63f network/sr-iov: move common parts to link_set_sr_iov_ifindices()
This also adds several debugging logs.
No functional change, just refactoring.
2023-09-08 20:09:15 +09:00
Yu Watanabe 4b12a8dd33 network/sr-iov: ignore -EINVAL in reading dev_port sysfs attribute
Fixes #27369.
2023-09-08 20:08:18 +09:00
Yu Watanabe 47f1ce1677 test-network: add testcase for [DHCPServer] ServerAddress= with null address 2023-09-08 20:03:40 +09:00
Yu Watanabe e443a88a9a man: update [DHCPServer] ServerAddress= 2023-09-08 20:03:40 +09:00
Yu Watanabe a0dfce0a3f network: allow to set null address for [DHCPServer] ServerAddress=
And refuse a link-local address.

With the previous commit, now ServerAddress= can take a null address,
but the config parser refused that. Let's allow that now.
2023-09-08 20:03:40 +09:00
Yu Watanabe 5459e11d39 network: find DHCP server address only on loading .network file
Previously, we periodically search suitable address for DHCP server,
1. when .network file is loaded,
2. when checking if we can configure sd_dhcp_server object,
3. when configuring sd_dhcp_server.

Especially, the step 2 may be triggered several times.

This makes, when .network file is loaded, find a corresponding Address
object, add a new Address object if not found, then save the found or
added Address object. So, it is not necessary to find address again on
configuring sd_dhcp_server object.
2023-09-08 20:03:40 +09:00
Yu Watanabe 26f8847102 network: call network_adjust_dhcp_server() from network_drop_invalid_addresses()
We need to find a suitable static address for the DHCP server.
So, all static addresses must be verified before network_adjust_dhcp_server()
is called. For safety, let's call it from network_drop_invalid_addresses().

No functional change, just refactoring and preparation for later
commits.
2023-09-08 20:03:40 +09:00
Yu Watanabe e63c6e9ffa conf-parser: introduce ordered_hashmap_by_section_find_unused_line() 2023-09-08 12:55:44 +09:00
Yu Watanabe d9171a230d conf-parser: check overflow in hashmap_find_free_section_line()
Also, this also renames the function, and makes it optionally takes
a filename.
2023-09-08 12:55:44 +09:00
Yu Watanabe 08ca764d0a conf-parser: modernize config_section_new()
- add assertions,
- rename argument to store result.
2023-09-08 12:55:44 +09:00
Yu Watanabe 7bf9e0d5f6 hashmap: introduce HASHMAP_BASE_FOREACH() and friend 2023-09-08 12:55:44 +09:00