gnrc_ipv6_nib: provide functions to get offset of public timestamps

This commit is contained in:
Martine Lenders 2021-08-04 12:36:10 +02:00
parent 91fe57a4d1
commit c33e40cce1
No known key found for this signature in database
GPG Key ID: 2134D77A5336DD80
2 changed files with 63 additions and 0 deletions

View File

@ -23,6 +23,11 @@
#include <kernel_defines.h>
/* prevent cascading include error to xtimer if it is not compiled in or not
* supported by board */
#if IS_USED(MODULE_EVTIMER)
#include "evtimer.h"
#endif
#include "net/ipv6/addr.h"
#include "net/gnrc/ipv6/nib/conf.h"
@ -99,6 +104,22 @@ void gnrc_ipv6_nib_abr_del(const ipv6_addr_t *addr);
*/
bool gnrc_ipv6_nib_abr_iter(void **state, gnrc_ipv6_nib_abr_t *abr);
#if IS_USED(MODULE_EVTIMER) || defined(DOXYGEN)
/**
* @brief Provides the time in minutes for which the authoritative border
* router entry is valid
*
* @param[in] abr An authoritative border router entry.
*
* @return The time in minutes for which the authoritative border router entry
* is valid.
*/
static inline uint32_t gnrc_ipv6_nib_abr_valid_offset(const gnrc_ipv6_nib_abr_t *abr)
{
return abr->valid_until - evtimer_now_min();
}
#endif
/**
* @brief Prints an authoritative border router list entry
*

View File

@ -22,6 +22,9 @@
#include <stdint.h>
#if IS_USED(MODULE_EVTIMER)
#include "evtimer.h"
#endif
#include "net/ipv6/addr.h"
#ifdef __cplusplus
@ -122,6 +125,45 @@ void gnrc_ipv6_nib_pl_del(unsigned iface,
bool gnrc_ipv6_nib_pl_iter(unsigned iface, void **state,
gnrc_ipv6_nib_pl_t *ple);
#if IS_USED(MODULE_EVTIMER) || defined(DOXYGEN)
/**
* @brief Provides the time in milliseconds for which the prefix list
* entry is valid
*
* @param[in] ple A prefix list entry.
*
* @return The time in milliseconds for which the prefix list entry is valid.
* UINT32_MAX if it is valid forever.
*/
static inline uint32_t gnrc_ipv6_nib_pl_valid_offset(const gnrc_ipv6_nib_pl_t *ple)
{
return (ple->valid_until == UINT32_MAX)
? UINT32_MAX
: (ple->valid_until - evtimer_now_msec());
}
/**
* @brief Provides the time in milliseconds for which the prefix list
* entry is preferred
*
* A prefix for which the preference expired is deprecated (see [RFC 4862]
* (https://tools.ietf.org/html/rfc4862))
*
* @param[in] ple A prefix list entry.
*
* @return The time in milliseconds for which the prefix list entry is
* preferred. UINT32_MAX if it is preferred forever.
*/
static inline uint32_t gnrc_ipv6_nib_pl_pref_offset(const gnrc_ipv6_nib_pl_t *ple)
{
return (ple->pref_until == UINT32_MAX)
? UINT32_MAX
: (ple->pref_until - evtimer_now_msec());
}
#endif
/**
* @brief Prints a prefix list entry
*