mirror of
https://github.com/systemd/systemd.git
synced 2024-11-24 10:43:35 +08:00
sd-radv: reset timer on sending unsolicited RA
Addresses https://github.com/systemd/systemd/pull/32267#discussion_r1567078807.
This commit is contained in:
parent
16e4dce6e8
commit
2a1e890943
@ -279,11 +279,13 @@ static int radv_process_packet(sd_radv *ra, ICMP6Packet *packet) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
struct in6_addr src = {};
|
||||
struct in6_addr src;
|
||||
r = sd_ndisc_router_solicit_get_sender_address(rs, &src);
|
||||
if (r < 0 && r != -ENODATA) /* null address is allowed */
|
||||
if (r == -ENODATA) /* null address is allowed */
|
||||
return sd_radv_send(ra); /* When an unsolicited RA, we need to also update timer. */
|
||||
if (r < 0)
|
||||
return log_radv_errno(ra, r, "Failed to get sender address of RS, ignoring: %m");
|
||||
if (r >= 0 && in6_addr_equal(&src, &ra->ipv6ll))
|
||||
if (in6_addr_equal(&src, &ra->ipv6ll))
|
||||
/* This should be definitely caused by a misconfiguration. If we send RA to ourself, the
|
||||
* kernel complains about that. Let's ignore the packet. */
|
||||
return log_radv_errno(ra, SYNTHETIC_ERRNO(EADDRINUSE), "Received RS from the same interface, ignoring.");
|
||||
|
Loading…
Reference in New Issue
Block a user