162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _WG_TIMERS_H 762306a36Sopenharmony_ci#define _WG_TIMERS_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/ktime.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistruct wg_peer; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_civoid wg_timers_init(struct wg_peer *peer); 1462306a36Sopenharmony_civoid wg_timers_stop(struct wg_peer *peer); 1562306a36Sopenharmony_civoid wg_timers_data_sent(struct wg_peer *peer); 1662306a36Sopenharmony_civoid wg_timers_data_received(struct wg_peer *peer); 1762306a36Sopenharmony_civoid wg_timers_any_authenticated_packet_sent(struct wg_peer *peer); 1862306a36Sopenharmony_civoid wg_timers_any_authenticated_packet_received(struct wg_peer *peer); 1962306a36Sopenharmony_civoid wg_timers_handshake_initiated(struct wg_peer *peer); 2062306a36Sopenharmony_civoid wg_timers_handshake_complete(struct wg_peer *peer); 2162306a36Sopenharmony_civoid wg_timers_session_derived(struct wg_peer *peer); 2262306a36Sopenharmony_civoid wg_timers_any_authenticated_packet_traversal(struct wg_peer *peer); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistatic inline bool wg_birthdate_has_expired(u64 birthday_nanoseconds, 2562306a36Sopenharmony_ci u64 expiration_seconds) 2662306a36Sopenharmony_ci{ 2762306a36Sopenharmony_ci return (s64)(birthday_nanoseconds + expiration_seconds * NSEC_PER_SEC) 2862306a36Sopenharmony_ci <= (s64)ktime_get_coarse_boottime_ns(); 2962306a36Sopenharmony_ci} 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci#endif /* _WG_TIMERS_H */ 32