From 75a17ecddc9dc579a3aecfc5b53cbb60e993965f Mon Sep 17 00:00:00 2001 From: Matej Perina Date: Thu, 21 Sep 2017 17:03:27 +0200 Subject: VPP-990 remove registered handler if control ping fails Change-Id: I5ca5763f0dc0a73cc6f014b855426b7ac180f356 Signed-off-by: Matej Perina --- src/vlibapi/api_common.h | 1 + src/vlibapi/api_shared.c | 12 ++++++++++++ src/vpp-api/java/jvpp-registry/jvpp_registry.c | 1 + 3 files changed, 14 insertions(+) diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h index 770cf47d188..8e6ab0ff094 100644 --- a/src/vlibapi/api_common.h +++ b/src/vlibapi/api_common.h @@ -144,6 +144,7 @@ void vl_msg_api_set_handlers (int msg_id, char *msg_name, void *cleanup, void *endian, void *print, int msg_size, int traced); +void vl_msg_api_clean_handlers (int msg_id); void vl_msg_api_config (vl_msg_api_msg_config_t *); void vl_msg_api_set_cleanup_handler (int msg_id, void *fp); void vl_msg_api_queue_handler (unix_shared_memory_queue_t * q); diff --git a/src/vlibapi/api_shared.c b/src/vlibapi/api_shared.c index 0c4952b189c..27898c3b952 100644 --- a/src/vlibapi/api_shared.c +++ b/src/vlibapi/api_shared.c @@ -716,6 +716,18 @@ vl_msg_api_set_handlers (int id, char *name, void *handler, void *cleanup, vl_msg_api_config (c); } +void +vl_msg_api_clean_handlers (int msg_id) +{ + vl_msg_api_msg_config_t cfg; + vl_msg_api_msg_config_t *c = &cfg; + + memset (c, 0, sizeof (*c)); + + c->id = msg_id; + vl_msg_api_config (c); +} + void vl_msg_api_set_cleanup_handler (int msg_id, void *fp) { diff --git a/src/vpp-api/java/jvpp-registry/jvpp_registry.c b/src/vpp-api/java/jvpp-registry/jvpp_registry.c index e8264cbfca3..c90822d7262 100644 --- a/src/vpp-api/java/jvpp-registry/jvpp_registry.c +++ b/src/vpp-api/java/jvpp-registry/jvpp_registry.c @@ -239,6 +239,7 @@ static int send_initial_control_ping() { } if (rv != 0) { + vl_msg_api_clean_handlers(rm->control_ping_reply_msg_id); clib_warning("first control ping failed: %d", rv); } return rv; -- cgit 1.2.3-korg