mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-08 20:58:20 +03:00
sd-radv: refuse to set preference except medium when router lifetime is zero
This commit is contained in:
parent
ac138551ce
commit
dd1b187075
@ -506,17 +506,20 @@ _public_ int sd_radv_set_other_information(sd_radv *ra, int other) {
|
||||
}
|
||||
|
||||
_public_ int sd_radv_set_preference(sd_radv *ra, unsigned preference) {
|
||||
int r = 0;
|
||||
|
||||
assert_return(ra, -EINVAL);
|
||||
assert_return(IN_SET(preference,
|
||||
SD_NDISC_PREFERENCE_LOW,
|
||||
SD_NDISC_PREFERENCE_MEDIUM,
|
||||
SD_NDISC_PREFERENCE_HIGH), -EINVAL);
|
||||
|
||||
/* RFC 4191, Section 2.2, "...If the Router Lifetime is zero, the preference value MUST be set
|
||||
* to (00) by the sender..." */
|
||||
if (ra->lifetime == 0 && preference != SD_NDISC_PREFERENCE_MEDIUM)
|
||||
return -EINVAL;
|
||||
|
||||
ra->flags = (ra->flags & ~(0x3 << 3)) | (preference << 3);
|
||||
|
||||
return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p, int dynamic) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user