mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
sd-radv: send RA on update in caller side
As the caller may want to update multiple prefixes and friends. Let's not automatically announce on update in library side. Currently, only prefix is updated during running. Hence, this does not change any effective behavior.
This commit is contained in:
@@ -672,19 +672,6 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
|
||||
log_radv(ra, "Added prefix %s", addr_p);
|
||||
}
|
||||
|
||||
if (!sd_radv_is_running(ra))
|
||||
return 0;
|
||||
|
||||
if (ra->ra_sent == 0)
|
||||
return 0;
|
||||
|
||||
/* If RAs have already been sent, send an RA immediately to announce the newly-added prefix */
|
||||
r = radv_send_router(ra, NULL);
|
||||
if (r < 0)
|
||||
log_radv_errno(ra, r, "Unable to send Router Advertisement for added prefix %s, ignoring: %m", addr_p);
|
||||
else
|
||||
log_radv(ra, "Sent Router Advertisement for added/updated prefix %s.", addr_p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -768,20 +755,6 @@ int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p) {
|
||||
log_radv(ra, "Added route prefix %s", strna(addr_p));
|
||||
}
|
||||
|
||||
if (!sd_radv_is_running(ra))
|
||||
return 0;
|
||||
|
||||
if (ra->ra_sent == 0)
|
||||
return 0;
|
||||
|
||||
/* If RAs have already been sent, send an RA immediately to announce the newly-added route prefix */
|
||||
r = radv_send_router(ra, NULL);
|
||||
if (r < 0)
|
||||
log_radv_errno(ra, r, "Unable to send Router Advertisement for added route prefix %s, ignoring: %m",
|
||||
strna(addr_p));
|
||||
else
|
||||
log_radv(ra, "Sent Router Advertisement for added route prefix %s.", strna(addr_p));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -840,20 +813,6 @@ int sd_radv_add_pref64_prefix(sd_radv *ra, sd_radv_pref64_prefix *p) {
|
||||
log_radv(ra, "Added PREF64 prefix %s", strna(addr_p));
|
||||
}
|
||||
|
||||
if (!sd_radv_is_running(ra))
|
||||
return 0;
|
||||
|
||||
if (ra->ra_sent == 0)
|
||||
return 0;
|
||||
|
||||
/* If RAs have already been sent, send an RA immediately to announce the newly-added route prefix */
|
||||
r = radv_send_router(ra, NULL);
|
||||
if (r < 0)
|
||||
log_radv_errno(ra, r, "Unable to send Router Advertisement for added PREF64 prefix %s, ignoring: %m",
|
||||
strna(addr_p));
|
||||
else
|
||||
log_radv(ra, "Sent Router Advertisement for added PREF64 prefix %s.", strna(addr_p));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -761,9 +761,18 @@ int radv_add_prefix(
|
||||
return r;
|
||||
|
||||
r = sd_radv_add_prefix(link->radv, p);
|
||||
if (r < 0 && r != -EEXIST)
|
||||
if (r == -EEXIST)
|
||||
return 0;
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (sd_radv_is_running(link->radv)) {
|
||||
/* Announce updated prefixe now. */
|
||||
r = sd_radv_send(link->radv);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user