From dd630d15d3e9d13da9ed98d3171b9ec4529e4e66 Mon Sep 17 00:00:00 2001 From: Artem Glazychev Date: Fri, 11 Jun 2021 00:10:00 +0700 Subject: wireguard: add events for peer we can receive events from peer about its state: -WIREGUARD_PEER_STATUS_DEAD -WIREGUARD_PEER_ESTABLISHED Type: improvement Change-Id: Ide83fbe2cfafa79ded5bcf3f6a884c26a7583db0 Signed-off-by: Artem Glazychev --- src/plugins/wireguard/wireguard_input.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/plugins/wireguard/wireguard_input.c') diff --git a/src/plugins/wireguard/wireguard_input.c b/src/plugins/wireguard/wireguard_input.c index 6a0623e0a76..4f5bd4de784 100644 --- a/src/plugins/wireguard/wireguard_input.c +++ b/src/plugins/wireguard/wireguard_input.c @@ -236,6 +236,10 @@ wg_handshake_process (vlib_main_t *vm, wg_main_t *wmp, vlib_buffer_t *b, vlib_node_increment_counter (vm, node_idx, WG_INPUT_ERROR_HANDSHAKE_SEND, 1); } + else + { + wg_peer_update_flags (rp->r_peer_idx, WG_PEER_ESTABLISHED, true); + } break; } case MESSAGE_HANDSHAKE_RESPONSE: @@ -247,7 +251,7 @@ wg_handshake_process (vlib_main_t *vm, wg_main_t *wmp, vlib_buffer_t *b, if (PREDICT_TRUE (entry != NULL)) { peer = wg_peer_get (*entry); - if (peer->is_dead) + if (wg_peer_is_dead (peer)) return WG_INPUT_ERROR_PEER; } else @@ -276,6 +280,10 @@ wg_handshake_process (vlib_main_t *vm, wg_main_t *wmp, vlib_buffer_t *b, vlib_node_increment_counter (vm, node_idx, WG_INPUT_ERROR_KEEPALIVE_SEND, 1); } + else + { + wg_peer_update_flags (*entry, WG_PEER_ESTABLISHED, true); + } } break; } @@ -378,6 +386,7 @@ wg_input_inline (vlib_main_t *vm, vlib_node_runtime_t *node, } else if (PREDICT_FALSE (state_cr == SC_FAILED)) { + wg_peer_update_flags (*peer_idx, WG_PEER_ESTABLISHED, false); next[0] = WG_INPUT_NEXT_ERROR; b[0]->error = node->errors[WG_INPUT_ERROR_DECRYPTION]; goto out; -- cgit 1.2.3-korg