mirror of
https://github.com/systemd/systemd.git
synced 2025-02-09 13:57:42 +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 flags;
|
||||||
uint8_t preference;
|
uint8_t preference;
|
||||||
uint32_t mtu;
|
uint32_t mtu;
|
||||||
|
usec_t reachable_usec;
|
||||||
usec_t retransmit_usec;
|
usec_t retransmit_usec;
|
||||||
usec_t lifetime_usec; /* timespan */
|
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 = {
|
struct nd_router_advert adv = {
|
||||||
.nd_ra_type = ND_ROUTER_ADVERT,
|
.nd_ra_type = ND_ROUTER_ADVERT,
|
||||||
.nd_ra_router_lifetime = usec_to_be16_sec(ra->lifetime_usec),
|
.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),
|
.nd_ra_retransmit = usec_to_be32_msec(ra->retransmit_usec),
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
@ -538,6 +539,13 @@ int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit) {
|
|||||||
return 0;
|
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) {
|
int sd_radv_set_retransmit(sd_radv *ra, uint64_t usec) {
|
||||||
assert_return(ra, -EINVAL);
|
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, true) >= 0);
|
||||||
assert_se(sd_radv_set_other_information(ra, false) >= 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_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, 10 * USEC_PER_MSEC) >= 0);
|
||||||
assert_se(sd_radv_set_retransmit(ra, 0) >= 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_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_mtu(sd_radv *ra, uint32_t mtu);
|
||||||
int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit);
|
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_retransmit(sd_radv *ra, uint64_t usec);
|
||||||
int sd_radv_set_router_lifetime(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);
|
int sd_radv_set_managed_information(sd_radv *ra, int b);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user