From: Nikita Skrynnik Date: Wed, 24 Jan 2024 01:09:47 +0000 (+1100) Subject: ping: Check only PING_RESPONSE_IP4 and PING_RESPONSE_IP6 events X-Git-Tag: v25.10-rc0~188 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F46%2F40246%2F10;p=vpp.git ping: Check only PING_RESPONSE_IP4 and PING_RESPONSE_IP6 events Check only PING_RESPONSE_IP4 and PING_RESPONSE_IP6 in ping binary API so it doesn't block other binary API requests while working. (current version of ping binary API can read other events like SOCKET_READ_EVENT, for example). Type: fix Change-Id: Ie7c5c92322af28633680c9c0d60fed739d4e65a0 Signed-off-by: Nikita Skrynnik --- diff --git a/src/plugins/ping/ping_api.c b/src/plugins/ping/ping_api.c index 5578fa560f2..a5af1033d0e 100644 --- a/src/plugins/ping/ping_api.c +++ b/src/plugins/ping/ping_api.c @@ -122,16 +122,22 @@ vl_api_want_ping_finished_events_t_handler ( while ((sleep_interval = time_ping_sent + ping_interval - vlib_time_now (vm)) > 0.0) { - uword event_type; + uword event_count; vlib_process_wait_for_event_or_clock (vm, sleep_interval); - event_type = vlib_process_get_events (vm, 0); - if (event_type == ~0) + if (dst_addr.version == AF_IP4) + event_count = + vlib_process_get_events_with_type (vm, 0, PING_RESPONSE_IP4); + else if (dst_addr.version == AF_IP6) + event_count = + vlib_process_get_events_with_type (vm, 0, PING_RESPONSE_IP6); + else break; - if (event_type == PING_RESPONSE_IP4 || - event_type == PING_RESPONSE_IP6) - reply_count += 1; + if (event_count == 0) + break; + + reply_count += 1; } }