2 # ROS ReturnResult common code
3 # Copyright 2007 Tomas Kukosa
7 dissector_handle_t res_handle = NULL;
8 const gchar *descr = "";
10 actx->rose_ctx->d.code = -1;
13 actx->rose_ctx->d.pdu = 2;
15 if ((actx->rose_ctx->d.code == 0) && actx->rose_ctx->res_local_dissector_table) {
16 res_handle = dissector_get_uint_handle(actx->rose_ctx->res_local_dissector_table, actx->rose_ctx->d.code_local);
17 } else if ((actx->rose_ctx->d.code == 1) && actx->rose_ctx->res_global_dissector_table) {
18 res_handle = dissector_get_string_handle(actx->rose_ctx->res_global_dissector_table, actx->rose_ctx->d.code_global);
24 !proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(res_handle)))) {
25 if (actx->rose_ctx->d.code == 0)
26 descr = wmem_strdup_printf(wmem_packet_scope(), "RES: %d", actx->rose_ctx->d.code_local);
27 else if (actx->rose_ctx->d.code == 1)
28 descr = wmem_strdup_printf(wmem_packet_scope(), "RES: %s", actx->rose_ctx->d.code_global);
30 descr = wmem_strdup_printf(wmem_packet_scope(), "RES:");
33 if (actx->rose_ctx->apdu_depth >= 0)
34 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %s", descr);
35 if (actx->rose_ctx->fillin_info)
36 col_append_str(actx->pinfo->cinfo, COL_INFO, descr);
37 if (actx->rose_ctx->fillin_ptr)
38 g_strlcat(actx->rose_ctx->fillin_ptr, descr, actx->rose_ctx->fillin_buf_size);
40 if (actx->rose_ctx->d.code != -1) {
41 if (!res_next_tvb) { /* empty result */
42 res_next_tvb = tvb_new_subset(tvb, (actx->encoding==ASN1_ENC_PER)?offset>>3:offset, 0, 0);
45 call_dissector_with_data((res_handle)?res_handle:data_handle, res_next_tvb, actx->pinfo, tree, actx->rose_ctx);
47 expert_add_info_format(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);