mirror of
https://github.com/systemd/systemd.git
synced 2025-02-08 09:57:41 +03:00
sd-radv: allow to configure reachable time in RA header
This commit is contained in:
parent
77db149c73
commit
bc50700c7e
@ -107,6 +107,7 @@ struct sd_radv {
|
||||
uint8_t flags;
|
||||
uint8_t preference;
|
||||
uint32_t mtu;
|
||||
usec_t reachable_usec;
|
||||
usec_t retransmit_usec;
|
||||
usec_t lifetime_usec; /* timespan */
|
||||
|
||||
|
@ -163,6 +163,7 @@ static int radv_send_router(sd_radv *ra, const struct in6_addr *dst) {
|
||||
struct nd_router_advert adv = {
|
||||
.nd_ra_type = ND_ROUTER_ADVERT,
|
||||
.nd_ra_router_lifetime = usec_to_be16_sec(ra->lifetime_usec),
|
||||
.nd_ra_reachable = usec_to_be32_msec(ra->reachable_usec),
|
||||
.nd_ra_retransmit = usec_to_be32_msec(ra->retransmit_usec),
|
||||
};
|
||||
struct {
|
||||
@ -538,6 +539,13 @@ int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sd_radv_set_reachable_time(sd_radv *ra, uint64_t usec) {
|
||||
assert_return(ra, -EINVAL);
|
||||
|
||||
ra->reachable_usec = usec;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sd_radv_set_retransmit(sd_radv *ra, uint64_t usec) {
|
||||
assert_return(ra, -EINVAL);
|
||||
|
||||
|
@ -199,6 +199,11 @@ TEST(radv) {
|
||||
assert_se(sd_radv_set_other_information(ra, true) >= 0);
|
||||
assert_se(sd_radv_set_other_information(ra, false) >= 0);
|
||||
|
||||
ASSERT_RETURN_EXPECTED_SE(sd_radv_set_reachable_time(NULL, 10 * USEC_PER_MSEC) < 0);
|
||||
assert_se(sd_radv_set_reachable_time(ra, 10 * USEC_PER_MSEC) >= 0);
|
||||
assert_se(sd_radv_set_reachable_time(ra, 0) >= 0);
|
||||
assert_se(sd_radv_set_reachable_time(ra, USEC_INFINITY) >= 0);
|
||||
|
||||
ASSERT_RETURN_EXPECTED_SE(sd_radv_set_retransmit(NULL, 10 * USEC_PER_MSEC) < 0);
|
||||
assert_se(sd_radv_set_retransmit(ra, 10 * USEC_PER_MSEC) >= 0);
|
||||
assert_se(sd_radv_set_retransmit(ra, 0) >= 0);
|
||||
|
@ -57,6 +57,7 @@ int sd_radv_set_link_local_address(sd_radv *ra, const struct in6_addr *addr);
|
||||
int sd_radv_set_mac(sd_radv *ra, const struct ether_addr *mac_addr);
|
||||
int sd_radv_set_mtu(sd_radv *ra, uint32_t mtu);
|
||||
int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit);
|
||||
int sd_radv_set_reachable_time(sd_radv *ra, uint64_t usec);
|
||||
int sd_radv_set_retransmit(sd_radv *ra, uint64_t usec);
|
||||
int sd_radv_set_router_lifetime(sd_radv *ra, uint64_t usec);
|
||||
int sd_radv_set_managed_information(sd_radv *ra, int b);
|
||||
|
Loading…
x
Reference in New Issue
Block a user