aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/ros/ros-inv.cnf
diff options
context:
space:
mode:
authorkukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7>2007-09-24 11:01:53 +0000
committerkukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7>2007-09-24 11:01:53 +0000
commit256266acdc90940b507143e8ac95773e6c9c8ec3 (patch)
tree863015b9909ec8016dce882eef61928e08bdbcc9 /asn1/ros/ros-inv.cnf
parent5f38b7749f9af06b365803164dac95e9605be0ff (diff)
improvements in ROS handling in Q.932 and H.450
move common ROS code into ros/ros-*.cnf files git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@22936 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'asn1/ros/ros-inv.cnf')
-rw-r--r--asn1/ros/ros-inv.cnf45
1 files changed, 45 insertions, 0 deletions
diff --git a/asn1/ros/ros-inv.cnf b/asn1/ros/ros-inv.cnf
new file mode 100644
index 0000000000..3822413ed9
--- /dev/null
+++ b/asn1/ros/ros-inv.cnf
@@ -0,0 +1,45 @@
+# ros-inv.cnf
+# ROS Invoke common code
+# Copyright 2007 Tomas Kukosa
+# $Id$
+
+
+#.FN_HDR Invoke
+ dissector_handle_t arg_handle = NULL;
+ const gchar *descr = "";
+
+ arg_next_tvb = NULL;
+#.FN_FTR Invoke
+ actx->rose_ctx->d.pdu = 1;
+
+ if ((actx->rose_ctx->d.code == 0) && actx->rose_ctx->arg_local_dissector_table) {
+ arg_handle = dissector_get_port_handle(actx->rose_ctx->arg_local_dissector_table, actx->rose_ctx->d.code_local);
+ } else if ((actx->rose_ctx->d.code == 1) && actx->rose_ctx->arg_global_dissector_table) {
+ arg_handle = dissector_get_string_handle(actx->rose_ctx->arg_global_dissector_table, actx->rose_ctx->d.code_global);
+ } else {
+ arg_handle = NULL;
+ }
+
+ if (!arg_handle ||
+ !proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(arg_handle)))) {
+ if (actx->rose_ctx->d.code == 0)
+ descr = ep_strdup_printf("INV: %d", actx->rose_ctx->d.code_local);
+ else if (actx->rose_ctx->d.code == 1)
+ descr = ep_strdup_printf("INV: %s", actx->rose_ctx->d.code_global);
+ } else {
+ descr = ep_strdup_printf("INV:");
+ }
+
+ 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 (!arg_next_tvb) { /* empty argument */
+ arg_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((arg_handle)?arg_handle:data_handle, arg_next_tvb, actx->pinfo, tree);
+#.END