diff options
Diffstat (limited to 'src/if_wg.c')
-rw-r--r-- | src/if_wg.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/if_wg.c b/src/if_wg.c index 4a91f59..f94a954 100644 --- a/src/if_wg.c +++ b/src/if_wg.c @@ -778,10 +778,10 @@ wg_socket_set(struct wg_softc *sc, struct socket *new_so4, struct socket *new_so sx_assert(&sc->sc_lock, SX_XLOCKED); - so4 = atomic_load_ptr(&so->so_so4); - so6 = atomic_load_ptr(&so->so_so6); - atomic_store_ptr(&so->so_so4, new_so4); - atomic_store_ptr(&so->so_so6, new_so6); + so4 = ck_pr_load_ptr(&so->so_so4); + so6 = ck_pr_load_ptr(&so->so_so6); + ck_pr_store_ptr(&so->so_so4, new_so4); + ck_pr_store_ptr(&so->so_so6, new_so6); if (!so4 && !so6) return; @@ -884,8 +884,8 @@ wg_send(struct wg_softc *sc, struct wg_endpoint *e, struct mbuf *m) sa = &e->e_remote.r_sa; NET_EPOCH_ENTER(et); - so4 = atomic_load_ptr(&so->so_so4); - so6 = atomic_load_ptr(&so->so_so6); + so4 = ck_pr_load_ptr(&so->so_so4); + so6 = ck_pr_load_ptr(&so->so_so6); if (e->e_remote.r_sa.sa_family == AF_INET && so4 != NULL) ret = sosend(so4, sa, NULL, m, control, 0, curthread); else if (e->e_remote.r_sa.sa_family == AF_INET6 && so6 != NULL) @@ -932,16 +932,16 @@ retry: static void wg_timers_enable(struct wg_peer *peer) { - WRITE_ONCE(peer->p_enabled, true); + ck_pr_store_bool(&peer->p_enabled, true); wg_timers_run_persistent_keepalive(peer); } static void wg_timers_disable(struct wg_peer *peer) { - WRITE_ONCE(peer->p_enabled, false); + ck_pr_store_bool(&peer->p_enabled, false); NET_EPOCH_WAIT(); - WRITE_ONCE(peer->p_need_another_keepalive, false); + ck_pr_store_bool(&peer->p_need_another_keepalive, false); callout_stop(&peer->p_new_handshake); callout_stop(&peer->p_send_keepalive); @@ -955,9 +955,9 @@ wg_timers_set_persistent_keepalive(struct wg_peer *peer, uint16_t interval) { struct epoch_tracker et; if (interval != peer->p_persistent_keepalive_interval) { - WRITE_ONCE(peer->p_persistent_keepalive_interval, interval); + ck_pr_store_16(&peer->p_persistent_keepalive_interval, interval); NET_EPOCH_ENTER(et); - if (peer->p_enabled) + if (ck_pr_load_bool(&peer->p_enabled)) wg_timers_run_persistent_keepalive(peer); NET_EPOCH_EXIT(et); } @@ -977,7 +977,7 @@ wg_timers_event_data_sent(struct wg_peer *peer) { struct epoch_tracker et; NET_EPOCH_ENTER(et); - if (peer->p_enabled && !callout_pending(&peer->p_new_handshake)) + if (ck_pr_load_bool(&peer->p_enabled) && !callout_pending(&peer->p_new_handshake)) callout_reset(&peer->p_new_handshake, MSEC_2_TICKS( NEW_HANDSHAKE_TIMEOUT * 1000 + arc4random_uniform(REKEY_TIMEOUT_JITTER)), @@ -990,13 +990,13 @@ wg_timers_event_data_received(struct wg_peer *peer) { struct epoch_tracker et; NET_EPOCH_ENTER(et); - if (peer->p_enabled) { + if (ck_pr_load_bool(&peer->p_enabled)) { if (!callout_pending(&peer->p_send_keepalive)) callout_reset(&peer->p_send_keepalive, MSEC_2_TICKS(KEEPALIVE_TIMEOUT * 1000), wg_timers_run_send_keepalive, peer); else - WRITE_ONCE(peer->p_need_another_keepalive, true); + ck_pr_store_bool(&peer->p_need_another_keepalive, true); } NET_EPOCH_EXIT(et); } @@ -1019,8 +1019,8 @@ wg_timers_event_any_authenticated_packet_traversal(struct wg_peer *peer) struct epoch_tracker et; uint16_t interval; NET_EPOCH_ENTER(et); - interval = READ_ONCE(peer->p_persistent_keepalive_interval); - if (peer->p_enabled && interval > 0) + interval = ck_pr_load_16(&peer->p_persistent_keepalive_interval); + if (ck_pr_load_bool(&peer->p_enabled) && interval > 0) callout_reset(&peer->p_persistent_keepalive, MSEC_2_TICKS(interval * 1000), wg_timers_run_persistent_keepalive, peer); @@ -1032,7 +1032,7 @@ wg_timers_event_handshake_initiated(struct wg_peer *peer) { struct epoch_tracker et; NET_EPOCH_ENTER(et); - if (peer->p_enabled) + if (ck_pr_load_bool(&peer->p_enabled)) callout_reset(&peer->p_retry_handshake, MSEC_2_TICKS( REKEY_TIMEOUT * 1000 + arc4random_uniform(REKEY_TIMEOUT_JITTER)), @@ -1045,7 +1045,7 @@ wg_timers_event_handshake_complete(struct wg_peer *peer) { struct epoch_tracker et; NET_EPOCH_ENTER(et); - if (peer->p_enabled) { + if (ck_pr_load_bool(&peer->p_enabled)) { mtx_lock(&peer->p_handshake_mtx); callout_stop(&peer->p_retry_handshake); peer->p_handshake_retries = 0; @@ -1061,7 +1061,7 @@ wg_timers_event_session_derived(struct wg_peer *peer) { struct epoch_tracker et; NET_EPOCH_ENTER(et); - if (peer->p_enabled) + if (ck_pr_load_bool(&peer->p_enabled)) callout_reset(&peer->p_zero_key_material, MSEC_2_TICKS(REJECT_AFTER_TIME * 3 * 1000), wg_timers_run_zero_key_material, peer); @@ -1073,7 +1073,7 @@ wg_timers_event_want_initiation(struct wg_peer *peer) { struct epoch_tracker et; NET_EPOCH_ENTER(et); - if (peer->p_enabled) + if (ck_pr_load_bool(&peer->p_enabled)) wg_timers_run_send_initiation(peer, 0); NET_EPOCH_EXIT(et); } @@ -1124,8 +1124,8 @@ wg_timers_run_send_keepalive(void *_peer) struct wg_peer *peer = _peer; wg_send_keepalive(peer); - if (READ_ONCE(peer->p_need_another_keepalive)) { - WRITE_ONCE(peer->p_need_another_keepalive, false); + if (ck_pr_load_bool(&peer->p_need_another_keepalive)) { + ck_pr_store_bool(&peer->p_need_another_keepalive, false); callout_reset(&peer->p_send_keepalive, MSEC_2_TICKS(KEEPALIVE_TIMEOUT * 1000), wg_timers_run_send_keepalive, peer); @@ -1161,7 +1161,7 @@ wg_timers_run_persistent_keepalive(void *_peer) { struct wg_peer *peer = _peer; - if (READ_ONCE(peer->p_persistent_keepalive_interval) > 0) + if (ck_pr_load_16(&peer->p_persistent_keepalive_interval) > 0) wg_send_keepalive(peer); } |