diff options
author | Marek Gradzki <mgradzki@cisco.com> | 2016-11-03 10:52:43 +0100 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2016-11-03 16:42:41 +0000 |
commit | bdb1f8193736c0c63429d049397d4783959c1148 (patch) | |
tree | 48df00eab6d0315a91b67cd81286ae5536f1f81f /plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c | |
parent | e7637e701717f24172cdbdbf89ba71bdef5125de (diff) |
Fail to register Java API for plugin that was not loaded (VPP-522)
Change-Id: Idb95888ae6fc7a9df197a919e3d3283f915f4a4c
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c')
-rw-r--r-- | plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c b/plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c index 3b573506ec6..1d878ea3e24 100644 --- a/plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c +++ b/plugins/ioam-plugin/ioam/lib-trace/jvpp_ioam_trace.c @@ -64,11 +64,15 @@ JNIEXPORT void JNICALL Java_io_fd_vpp_jvpp_ioamtrace_JVppIoamtraceImpl_init0 plugin_main->my_client_index = my_client_index; plugin_main->vl_input_queue = (unix_shared_memory_queue_t *)queue_address; - name = format (0, "ioam_trace_%08x%c", api_version, 0); - plugin_main->msg_id_base = vl_client_get_first_plugin_msg_id ((char *) name); + name = format (0, "ioam_trace_%08x%c", api_version, 0); + plugin_main->msg_id_base = vl_client_get_first_plugin_msg_id ((char *) name); - plugin_main->callbackObject = (*env)->NewGlobalRef(env, callback); - plugin_main->callbackClass = (jclass)(*env)->NewGlobalRef(env, (*env)->GetObjectClass(env, callback)); + if (plugin_main->msg_id_base == (u16) ~0) { + jclass exClass = (*env)->FindClass(env, "java/lang/IllegalStateException"); + (*env)->ThrowNew(env, exClass, "ioam_trace plugin is not loaded in VPP"); + } else { + plugin_main->callbackObject = (*env)->NewGlobalRef(env, callback); + plugin_main->callbackClass = (jclass)(*env)->NewGlobalRef(env, (*env)->GetObjectClass(env, callback)); #define _(N,n) \ vl_msg_api_set_handlers(VL_API_##N + plugin_main->msg_id_base, #n, \ @@ -79,6 +83,7 @@ JNIEXPORT void JNICALL Java_io_fd_vpp_jvpp_ioamtrace_JVppIoamtraceImpl_init0 sizeof(vl_api_##n##_t), 1); foreach_api_reply_handler; #undef _ + } } JNIEXPORT void JNICALL Java_io_fd_vpp_jvpp_ioamtrace_JVppIoamtraceImpl_close0 |