RFC 4862 Section 5.5.3, bullet e, sub-bullet 3 applies to existing
addresses, i.e. when address_get() returns success. If the address is
new (i.e. address_get() fails), then we should not be adding 2 hours to
the lifetime_valid_usec. Instead, use the valid_lifetime from the RA's
Prefix Information Option.
This change allows v6LC.3.2.2 to pass. Also verified all v6LC3.2.* tests
pass. This covers all the v6LC tests from Group2: Router Advertisement
Processing and Address Lifetime.
Matt Muggeridge [Mon, 13 May 2024 21:50:51 +0000 (07:50 +1000)]
network: IPv6 Compliance: Router Advertisement Processing, Reachable Time [v6LC.2.2.15] (#32792)
Previously, RA option fields were being ignored when the Router Lifetime
value was zero. Remove this logic to be compliant with RFC4861.
Extract from: https://www.ietf.org/rfc/rfc4861.html#section-4.2, p.21,
first paragraph:
The Router Lifetime applies only to
the router's usefulness as a default router; it
does not apply to information contained in other
message fields or options.
curl-glue: catch libcurl attempting to change timeout handler when we destroy a curl context on exit
If we destroy both an event loop and a curl contect object at the same
time, then we get into this weird situation where curl wants us to
reconfigure a timout event source right before destruction, which
sd-event will refuse however, since it is already being shutdown.
Hence, catch that and simply don't bother adjusting the timeout, since
we cannot get back from there anyway.
KayJay7 [Mon, 13 May 2024 13:49:07 +0000 (15:49 +0200)]
hwdb: ASRock LED Controller classified incorrectly as joystick due to buttons and axis (#32775)
The function `builtin-input_id` incorrectly identifies the ASRock LED Controller
as an input device due to the presence of buttons and axis. To fix this we add
a new rule in `hwdb.d/60-input-id.hwdb`.
The properties have been set to empty instead of `0` because some programs
might check if the value is set at all instead of checking its value, as discussed
in #32773.
The device has no real keys. The devices is controlled by i2c interface and some
settings in UEFI, and it provides an header to connect LED strips and similar devices.
I suppose it's possible that ASRock intended to connect devices with buttons for
controlling LEDs to it, but: (i) the controller itself does not have key, (ii) to my
knowledge no such device exists. So I think we can unset that property as well.
On a sidenote, unsetting those properties does not affect the i2c interface,
OpenRGB still interacts normally with the device.
Daan De Meyer [Sat, 11 May 2024 14:42:24 +0000 (16:42 +0200)]
debug-generator: Allow specifying name of unit-dropin credential
A fixed name is too rigid, let's give users the ability to define
custom drop-in names which at the same time also allows defining
multiple dropins per unit.
We use ~ as the separator because:
- ':' is not allowed in credential names
- '=' is used to separate credential from value in mkosi's --credential
argument.
- '-' is commonly used in filenames
- '@' already has meaning as the unit template specifier which might be
confusing when adding dropins for template units
Yu Watanabe [Fri, 10 May 2024 11:38:06 +0000 (20:38 +0900)]
test-network: check existence of kernel bug
This adds checks for the kernel bug caused by
https://github.com/torvalds/linux/commit/3ddc2231c8108302a8229d3c5849ee792a63230d,
it will be fixed by
https://patchwork.kernel.org/project/netdevbpf/patch/20240510072932.2678952-1-edumazet@google.com/
Yu Watanabe [Fri, 10 May 2024 05:21:10 +0000 (14:21 +0900)]
test: wait for network interface reconfigured after updating config
Otherwise, at this stage, the interface may be in e.g. initialized or
pending state, and the drop-in file introduced by the previous command
may not be registered to the state file for the interface.
Yu Watanabe [Fri, 10 May 2024 03:49:50 +0000 (12:49 +0900)]
network/dhcp4: do not set gateway if DNS server or friends is in the acquired prefix
Previously, even if a DNS server is in the acquired prefix, the route to the
server might have gateway address.
This makes the prefix route, which is always configured, is also handled
as same as static routes, and do not use any gateway if the prefix route
is the most suitable route to access the destination.
The same change is also applied to route to NTP servers and semi-static
routes.
logs-show: flush matches before and after finding boots
Otherwise, if several matches already set, then the first seek to head
or tail may move the cursor to an invalid place, hence they provide
wrong ID(s). Also, reading journal after calling these function may
provide unexpected data.
Currently, the caller does not install any matches before calling the
functions, and does not read any journal entry after journal_get_boots()
succeeds or journal_find_boot_by_offset() succeeds with 0. Hence, this
should not change any behavior. Just for safety.
journalctl: several cleanups for parse_boot_descriptor()
- rename to parse_id_descriptor(), to make it usable for other kind of
ID later.
- add missing assertions,
- prefix arguments for storing results with 'ret_',
- drop unnecessary 'else'.
shell-completion: on zsh, systemd-cat is a precommand
_precommand lets zsh complete other commands and their arguments
e.g. it can complete grep with "systemd-cat gr" and complete grep options
with "systemd-cat grep -"
This cleans up the code a bit. Also, before this commit,
if MemoryAvailable is set but show_memory_available
is false, and we have nothing else to output, empty
parenthesis is shown. This can be easily reproduced
on -.slice:
Colin Watson [Wed, 8 May 2024 14:01:01 +0000 (15:01 +0100)]
docs,man: Avoid some ambiguous uses of "may not"
Like much English text, the systemd documentation uses "may not" in the
sense of both "will possibly not" and "is forbidden to". In many cases
this is OK because the context makes it clear, but in others I felt it
was possible to read the "is forbidden to" sense by mistake: in
particular, I tripped over "the target file may not exist" in
systemd.unit(5) before realizing the correct interpretation.
Use "might not" or "may choose not to" in these cases to make it clear
which sense we mean.