sd-ndisc: introduce sd_ndisc_router_get_reachable_time()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 20 Feb 2024 06:10:59 +0000 (15:10 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 20 Feb 2024 06:31:39 +0000 (15:31 +0900)
src/libsystemd-network/ndisc-router-internal.h
src/libsystemd-network/sd-ndisc-router.c
src/systemd/sd-ndisc-router.h

index 63d4f90ba909973c9c7ef814c75b444d1adf9fa4..5bd9a65dd227948639dfc308861a493a9271689f 100644 (file)
@@ -24,6 +24,7 @@ struct sd_ndisc_router {
         uint64_t flags;
         unsigned preference;
         uint64_t lifetime_usec;
+        usec_t reachable_time_usec;
         usec_t retransmission_time_usec;
 
         uint8_t hop_limit;
index 536ee8cdf22f801cacaa284cf52e753f1905e4e5..b90fb77cd82792f46f68717301b6a59ca7892eee 100644 (file)
@@ -145,6 +145,7 @@ int ndisc_router_parse(sd_ndisc *nd, sd_ndisc_router *rt) {
         rt->flags = a->nd_ra_flags_reserved; /* the first 8 bits */
         rt->lifetime_usec = be16_sec_to_usec(a->nd_ra_router_lifetime, /* max_as_infinity = */ false);
         rt->icmp6_ratelimit_usec = be32_msec_to_usec(a->nd_ra_retransmit, /* max_as_infinity = */ false);
+        rt->reachable_time_usec = be32_msec_to_usec(a->nd_ra_reachable, /* mas_as_infinity = */ false);
         rt->retransmission_time_usec = be32_msec_to_usec(a->nd_ra_retransmit, /* max_as_infinity = */ false);
 
         rt->preference = (rt->flags >> 3) & 3;
@@ -277,6 +278,14 @@ int sd_ndisc_router_get_hop_limit(sd_ndisc_router *rt, uint8_t *ret) {
         return 0;
 }
 
+int sd_ndisc_router_get_reachable_time(sd_ndisc_router *rt, uint64_t *ret) {
+        assert_return(rt, -EINVAL);
+        assert_return(ret, -EINVAL);
+
+        *ret = rt->reachable_time_usec;
+        return 0;
+}
+
 int sd_ndisc_router_get_retransmission_time(sd_ndisc_router *rt, uint64_t *ret) {
         assert_return(rt, -EINVAL);
         assert_return(ret, -EINVAL);
index 1445939b1d6b88a8e5e8a7457fb29999bb3452c5..7f1a0229e8cd56f9c8cc3230f223c273dc6da591 100644 (file)
@@ -44,6 +44,7 @@ int sd_ndisc_router_get_flags(sd_ndisc_router *rt, uint64_t *ret);
 int sd_ndisc_router_get_preference(sd_ndisc_router *rt, unsigned *ret);
 int sd_ndisc_router_get_lifetime(sd_ndisc_router *rt, uint64_t *ret);
 int sd_ndisc_router_get_lifetime_timestamp(sd_ndisc_router *rt, clockid_t clock, uint64_t *ret);
+int sd_ndisc_router_get_reachable_time(sd_ndisc_router *rt, uint64_t *ret);
 int sd_ndisc_router_get_retransmission_time(sd_ndisc_router *rt, uint64_t *ret);
 int sd_ndisc_router_get_mtu(sd_ndisc_router *rt, uint32_t *ret);