LCOV - code coverage report
Current view: top level - plugins/wireguard - wireguard_timer.h (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 7 7 100.0 %
Date: 2023-07-05 22:20:52 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2020 Doc.ai and/or its affiliates.
       3             :  * Licensed under the Apache License, Version 2.0 (the "License");
       4             :  * you may not use this file except in compliance with the License.
       5             :  * You may obtain a copy of the License at:
       6             :  *
       7             :  *     http://www.apache.org/licenses/LICENSE-2.0
       8             :  *
       9             :  * Unless required by applicable law or agreed to in writing, software
      10             :  * distributed under the License is distributed on an "AS IS" BASIS,
      11             :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      12             :  * See the License for the specific language governing permissions and
      13             :  * limitations under the License.
      14             :  */
      15             : 
      16             : #ifndef __included_wg_timer_h__
      17             : #define __included_wg_timer_h__
      18             : 
      19             : #include <vlib/vlib.h>
      20             : #include <vppinfra/clib.h>
      21             : #include <vppinfra/tw_timer_16t_2w_512sl.h>
      22             : 
      23             : /** WG timers */
      24             : #define foreach_wg_timer                            \
      25             :   _(RETRANSMIT_HANDSHAKE, "RETRANSMIT HANDSHAKE")   \
      26             :   _(PERSISTENT_KEEPALIVE, "PERSISTENT KEEPALIVE")   \
      27             :   _(SEND_KEEPALIVE, "SEND KEEPALIVE")               \
      28             :   _(NEW_HANDSHAKE, "NEW HANDSHAKE")                 \
      29             :   _(KEY_ZEROING, "KEY ZEROING")                     \
      30             : 
      31             : typedef enum _wg_timers
      32             : {
      33             : #define _(sym, str) WG_TIMER_##sym,
      34             :   foreach_wg_timer
      35             : #undef _
      36             :   WG_N_TIMERS
      37             : } wg_timers_e;
      38             : 
      39             : typedef struct wg_peer wg_peer_t;
      40             : 
      41             : void wg_timer_wheel_init ();
      42             : void wg_timers_stop (wg_peer_t * peer);
      43             : void wg_timers_data_sent (wg_peer_t * peer);
      44             : void wg_timers_data_sent_opt (wg_peer_t *peer, f64 time);
      45             : void wg_timers_data_received (wg_peer_t * peer);
      46             : void wg_timers_any_authenticated_packet_sent (wg_peer_t * peer);
      47             : void wg_timers_any_authenticated_packet_sent_opt (wg_peer_t *peer, f64 time);
      48             : void wg_timers_any_authenticated_packet_received (wg_peer_t * peer);
      49             : void wg_timers_any_authenticated_packet_received_opt (wg_peer_t *peer,
      50             :                                                       f64 time);
      51             : void wg_timers_handshake_initiated (wg_peer_t * peer);
      52             : void wg_timers_handshake_complete (wg_peer_t * peer);
      53             : void wg_timers_send_first_handshake (wg_peer_t *peer);
      54             : void wg_timers_session_derived (wg_peer_t * peer);
      55             : void wg_timers_any_authenticated_packet_traversal (wg_peer_t * peer);
      56             : 
      57             : 
      58             : static inline bool
      59         674 : wg_birthdate_has_expired (f64 birthday_seconds, f64 expiration_seconds)
      60             : {
      61         674 :   if (birthday_seconds == 0.0)
      62         269 :     return true;
      63         405 :   f64 now_seconds = vlib_time_now (vlib_get_main ());
      64         405 :   return (birthday_seconds + expiration_seconds) < now_seconds;
      65             : }
      66             : 
      67             : static_always_inline bool
      68        8636 : wg_birthdate_has_expired_opt (f64 birthday_seconds, f64 expiration_seconds,
      69             :                               f64 time)
      70             : {
      71        8636 :   return (birthday_seconds + expiration_seconds) < time;
      72             : }
      73             : 
      74             : #endif /* __included_wg_timer_h__ */
      75             : 
      76             : /*
      77             :  * fd.io coding-style-patch-verification: ON
      78             :  *
      79             :  * Local Variables:
      80             :  * eval: (c-set-style "gnu")
      81             :  * End:
      82             :  */

Generated by: LCOV version 1.14