diff options
Diffstat (limited to 'lease.h')
-rw-r--r-- | lease.h | 23 |
1 files changed, 17 insertions, 6 deletions
@@ -37,10 +37,12 @@ void leases_free(); /* * Creates a new lease and returns a pointer to it, or NULL if either we ran out - * of assignable IPs or the requested IP is already taken. + * of assignable IPs or if requested IP(s) are already taken. */ struct wg_dynamic_lease *new_lease(wg_key pubkey, uint32_t leasetime, - struct in_addr *ipv4, struct in6_addr *ipv6); + const struct in_addr *ipv4, + const struct in6_addr *ipv6, + struct wg_dynamic_lease *current); /* * Returns all leases belonging to pubkey, or NULL if there are none. @@ -48,12 +50,12 @@ struct wg_dynamic_lease *new_lease(wg_key pubkey, uint32_t leasetime, struct wg_dynamic_lease *get_leases(wg_key pubkey); /* - * Extend the lease to be leasetime seconds long again. Returns true on error, - * or false otherwise. + * Release the lease and free allocated memory. */ -bool extend_lease(struct wg_dynamic_lease *lease, uint32_t leasetime); +bool release_lease(struct wg_dynamic_lease *lease, wg_key pubkey); -/* Refreshes all leases, meaning expired ones will be removed. Returns the +/* + * Refreshes all leases, meaning expired ones will be removed. Returns the * amount of seconds until the next lease will expire, or at most INT_MAX/1000. */ int leases_refresh(void (*update_cb)(wg_key *, int)); @@ -63,4 +65,13 @@ int leases_refresh(void (*update_cb)(wg_key *, int)); */ void leases_update_pools(struct mnl_socket *nlsock); +/* + * Return true if lease is !NULL and has not expired. + */ +bool lease_is_valid(const struct wg_dynamic_lease *lease); + +#ifdef DEBUG +char *lease_to_str(const struct wg_dynamic_lease *l); +#endif + #endif |