wireshark/asn1/ros/ros-err.cnf

48 lines
1.9 KiB
INI

# ros-err.cnf
# ROS ReturnError common code
# Copyright 2007 Tomas Kukosa
# $Id$
#.FN_HDR ReturnError
dissector_handle_t err_handle = NULL;
const gchar *descr = "";
err_next_tvb = NULL;
#.FN_FTR ReturnError
actx->rose_ctx->d.pdu = 3;
if ((actx->rose_ctx->d.code == 0) && actx->rose_ctx->err_local_dissector_table) {
err_handle = dissector_get_uint_handle(actx->rose_ctx->err_local_dissector_table, actx->rose_ctx->d.code_local);
} else if ((actx->rose_ctx->d.code == 1) && actx->rose_ctx->err_global_dissector_table) {
err_handle = dissector_get_string_handle(actx->rose_ctx->err_global_dissector_table, actx->rose_ctx->d.code_global);
} else {
err_handle = NULL;
}
if (!err_handle ||
!proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(err_handle)))) {
if (actx->rose_ctx->d.code == 0)
descr = ep_strdup_printf("ERR: %d", actx->rose_ctx->d.code_local);
else if (actx->rose_ctx->d.code == 1)
descr = ep_strdup_printf("ERR: %s", actx->rose_ctx->d.code_global);
} else {
descr = ep_strdup_printf("ERR:");
}
if (actx->rose_ctx->apdu_depth >= 0)
proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), actx->rose_ctx->apdu_depth), " %s", descr);
if (actx->rose_ctx->fillin_info && check_col(actx->pinfo->cinfo, COL_INFO))
col_append_str(actx->pinfo->cinfo, COL_INFO, descr);
if (actx->rose_ctx->fillin_ptr)
g_strlcat(actx->rose_ctx->fillin_ptr, descr, actx->rose_ctx->fillin_buf_size);
if (!err_next_tvb) { /* empty error */
err_next_tvb = tvb_new_subset(tvb, (actx->encoding==ASN1_ENC_PER)?offset>>3:offset, 0, 0);
}
actx->pinfo->private_data = actx->rose_ctx;
call_dissector((err_handle)?err_handle:data_handle, err_next_tvb, actx->pinfo, tree);
if (!err_handle) {
expert_add_info_format(actx->pinfo, tree, PI_UNDECODED, PI_WARN, "Undecoded %s", descr);
}
#.END