/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-h450-ros.c */
-/* ../../tools/asn2wrs.py -p h450.ros -c ./h450-ros.cnf -s ./packet-h450-ros-template -D . -O ../../epan/dissectors ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn */
+/* asn2wrs.py -p h450.ros -c ./h450-ros.cnf -s ./packet-h450-ros-template -D . -O ../.. ../ros/Remote-Operations-Information-Objects.asn Remote-Operations-Apdus.asn */
/* Input file: packet-h450-ros-template.c */
-#line 1 "../../asn1/h450-ros/packet-h450-ros-template.c"
+#line 1 "./asn1/h450-ros/packet-h450-ros-template.c"
/* packet-h450-ros.c
* Routines for H.450 packet dissection
* 2007 Tomas Kukosa
*
- * $Id$
- *
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
#include <epan/expert.h>
#include "packet-per.h"
+#include "packet-h450-ros.h"
#define PNAME "H.450 Remote Operations Apdus"
#define PSNAME "H450.ROS"
#define PFNAME "h450.ros"
+void proto_register_h450_ros(void);
+void proto_reg_handoff_h450_ros(void);
+
/* Initialize the protocol and registered fields */
static int proto_h450_ros = -1;
/*--- Included file: packet-h450-ros-hf.c ---*/
-#line 1 "../../asn1/h450-ros/packet-h450-ros-hf.c"
+#line 1 "./asn1/h450-ros/packet-h450-ros-hf.c"
static int hf_h450_ros_local = -1; /* T_local */
static int hf_h450_ros_global = -1; /* T_global */
static int hf_h450_ros_invoke = -1; /* Invoke */
static int hf_h450_ros_returnErrorProblem = -1; /* ReturnErrorProblem */
/*--- End of included file: packet-h450-ros-hf.c ---*/
-#line 42 "../../asn1/h450-ros/packet-h450-ros-template.c"
+#line 44 "./asn1/h450-ros/packet-h450-ros-template.c"
/* Initialize the subtree pointers */
/*--- Included file: packet-h450-ros-ett.c ---*/
-#line 1 "../../asn1/h450-ros/packet-h450-ros-ett.c"
+#line 1 "./asn1/h450-ros/packet-h450-ros-ett.c"
static gint ett_h450_ros_Code = -1;
static gint ett_h450_ros_ROS = -1;
static gint ett_h450_ros_Invoke = -1;
static gint ett_h450_ros_T_problem = -1;
/*--- End of included file: packet-h450-ros-ett.c ---*/
-#line 45 "../../asn1/h450-ros/packet-h450-ros-template.c"
+#line 47 "./asn1/h450-ros/packet-h450-ros-template.c"
static expert_field ei_ros_undecoded = EI_INIT;
/* Preferences */
/* Subdissectors */
-static dissector_handle_t data_handle = NULL;
+static dissector_handle_t data_handle = NULL;
-/* Gloabl variables */
+/* Global variables */
static gint32 problem_val;
static gchar problem_str[64];
static tvbuff_t *arg_next_tvb, *res_next_tvb, *err_next_tvb;
-static void
-argument_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_) {
+static int
+argument_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void* data _U_) {
arg_next_tvb = tvb;
+ return tvb_captured_length(tvb);
}
-static void
-result_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_) {
+static int
+result_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void* data _U_) {
res_next_tvb = tvb;
+ return tvb_captured_length(tvb);
}
-static void
-error_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_) {
+static int
+error_cb(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, void* data _U_) {
err_next_tvb = tvb;
+ return tvb_captured_length(tvb);
}
/*--- Included file: packet-h450-ros-fn.c ---*/
-#line 1 "../../asn1/h450-ros/packet-h450-ros-fn.c"
+#line 1 "./asn1/h450-ros/packet-h450-ros-fn.c"
static int
ett_h450_ros_Code, Code_choice,
&actx->rose_ctx->d.code);
-#line 40 "../../asn1/h450-ros/h450-ros.cnf"
+#line 39 "./asn1/h450-ros/h450-ros.cnf"
actx->rose_ctx->d.code_item = actx->created_item;
return offset;
static int
dissect_h450_ros_T_invokeIdConstrained(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 68 "../../asn1/h450-ros/h450-ros.cnf"
+#line 67 "./asn1/h450-ros/h450-ros.cnf"
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 65535U, NULL, TRUE);
static int
dissect_h450_ros_InvokeArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_open_type_pdu(tvb, offset, actx, tree, hf_index, argument_cb);
+ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, argument_cb);
return offset;
}
static int
dissect_h450_ros_Invoke(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 8 "../../asn1/ros/ros-inv.cnf"
+#line 6 "./asn1/ros/ros-inv.cnf"
dissector_handle_t arg_handle = NULL;
const gchar *descr = "";
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_h450_ros_Invoke, Invoke_sequence);
-#line 13 "../../asn1/ros/ros-inv.cnf"
+#line 11 "./asn1/ros/ros-inv.cnf"
actx->rose_ctx->d.pdu = 1;
if ((actx->rose_ctx->d.code == 0) && actx->rose_ctx->arg_local_dissector_table) {
arg_handle = NULL;
}
- if (!arg_handle ||
+ 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);
+ descr = wmem_strdup_printf(wmem_packet_scope(), "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);
+ descr = wmem_strdup_printf(wmem_packet_scope(), "INV: %s", actx->rose_ctx->d.code_global);
} else {
- descr = ep_strdup_printf("INV:");
+ descr = wmem_strdup(wmem_packet_scope(), "INV:");
}
if (actx->rose_ctx->apdu_depth >= 0)
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);
+
+ call_dissector_with_data((arg_handle)?arg_handle:data_handle, arg_next_tvb, actx->pinfo, tree, actx->rose_ctx);
if (!arg_handle) {
- expert_add_info_format_text(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);
+ expert_add_info_format(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);
}
return offset;
static int
dissect_h450_ros_ResultArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_open_type_pdu(tvb, offset, actx, tree, hf_index, result_cb);
+ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, result_cb);
return offset;
}
static int
dissect_h450_ros_ReturnResult(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 7 "../../asn1/ros/ros-res.cnf"
+#line 6 "./asn1/ros/ros-res.cnf"
dissector_handle_t res_handle = NULL;
const gchar *descr = "";
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_h450_ros_ReturnResult, ReturnResult_sequence);
-#line 13 "../../asn1/ros/ros-res.cnf"
+#line 12 "./asn1/ros/ros-res.cnf"
actx->rose_ctx->d.pdu = 2;
if ((actx->rose_ctx->d.code == 0) && actx->rose_ctx->res_local_dissector_table) {
res_handle = NULL;
}
- if (!res_handle ||
+ if (!res_handle ||
!proto_is_protocol_enabled(find_protocol_by_id(dissector_handle_get_protocol_index(res_handle)))) {
if (actx->rose_ctx->d.code == 0)
- descr = ep_strdup_printf("RES: %d", actx->rose_ctx->d.code_local);
+ descr = wmem_strdup_printf(wmem_packet_scope(), "RES: %d", actx->rose_ctx->d.code_local);
else if (actx->rose_ctx->d.code == 1)
- descr = ep_strdup_printf("RES: %s", actx->rose_ctx->d.code_global);
+ descr = wmem_strdup_printf(wmem_packet_scope(), "RES: %s", actx->rose_ctx->d.code_global);
} else {
- descr = ep_strdup_printf("RES:");
+ descr = wmem_strdup(wmem_packet_scope(), "RES:");
}
if (actx->rose_ctx->apdu_depth >= 0)
if (!res_next_tvb) { /* empty result */
res_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((res_handle)?res_handle:data_handle, res_next_tvb, actx->pinfo, tree);
+
+ call_dissector_with_data((res_handle)?res_handle:data_handle, res_next_tvb, actx->pinfo, tree, actx->rose_ctx);
if (!res_handle) {
- expert_add_info_format_text(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);
+ expert_add_info_format(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);
}
}
static int
dissect_h450_ros_T_parameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_open_type_pdu(tvb, offset, actx, tree, hf_index, error_cb);
+ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, error_cb);
return offset;
}
static int
dissect_h450_ros_ReturnError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 7 "../../asn1/ros/ros-err.cnf"
+#line 6 "./asn1/ros/ros-err.cnf"
dissector_handle_t err_handle = NULL;
const gchar *descr = "";
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_h450_ros_ReturnError, ReturnError_sequence);
-#line 12 "../../asn1/ros/ros-err.cnf"
+#line 11 "./asn1/ros/ros-err.cnf"
actx->rose_ctx->d.pdu = 3;
if ((actx->rose_ctx->d.code == 0) && actx->rose_ctx->err_local_dissector_table) {
err_handle = NULL;
}
- if (!err_handle ||
+ 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);
+ descr = wmem_strdup_printf(wmem_packet_scope(), "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);
+ descr = wmem_strdup_printf(wmem_packet_scope(), "ERR: %s", actx->rose_ctx->d.code_global);
} else {
- descr = ep_strdup_printf("ERR:");
+ descr = wmem_strdup(wmem_packet_scope(), "ERR:");
}
if (actx->rose_ctx->apdu_depth >= 0)
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);
+
+ call_dissector_with_data((err_handle)?err_handle:data_handle, err_next_tvb, actx->pinfo, tree, actx->rose_ctx);
if (!err_handle) {
- expert_add_info_format_text(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);
+ expert_add_info_format(actx->pinfo, tree, &ei_ros_undecoded, "Undecoded %s", descr);
}
return offset;
dissect_h450_ros_GeneralProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val);
-#line 51 "../../asn1/h450-ros/h450-ros.cnf"
- g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_GeneralProblem_vals), ""), 64);
+#line 50 "./asn1/h450-ros/h450-ros.cnf"
+ g_strlcpy(problem_str, val_to_str_const(problem_val, VALS(h450_ros_GeneralProblem_vals), ""), 64);
problem_str[64-1] = '\0';
return offset;
dissect_h450_ros_InvokeProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val);
-#line 54 "../../asn1/h450-ros/h450-ros.cnf"
- g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_InvokeProblem_vals), ""), 64);
+#line 53 "./asn1/h450-ros/h450-ros.cnf"
+ g_strlcpy(problem_str, val_to_str_const(problem_val, VALS(h450_ros_InvokeProblem_vals), ""), 64);
problem_str[64-1] = '\0';
return offset;
dissect_h450_ros_ReturnResultProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val);
-#line 57 "../../asn1/h450-ros/h450-ros.cnf"
- g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnResultProblem_vals), ""), 64);
+#line 56 "./asn1/h450-ros/h450-ros.cnf"
+ g_strlcpy(problem_str, val_to_str_const(problem_val, VALS(h450_ros_ReturnResultProblem_vals), ""), 64);
problem_str[64-1] = '\0';
return offset;
dissect_h450_ros_ReturnErrorProblem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, &problem_val);
-#line 60 "../../asn1/h450-ros/h450-ros.cnf"
- g_strlcpy(problem_str, val_to_str(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), ""), 64);
+#line 59 "./asn1/h450-ros/h450-ros.cnf"
+ g_strlcpy(problem_str, val_to_str_const(problem_val, VALS(h450_ros_ReturnErrorProblem_vals), ""), 64);
problem_str[64-1] = '\0';
return offset;
static int
dissect_h450_ros_Reject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 7 "../../asn1/ros/ros-rej.cnf"
+#line 6 "./asn1/ros/ros-rej.cnf"
const gchar *descr = "";
problem_str[0] = '\0';
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
ett_h450_ros_Reject, Reject_sequence);
-#line 11 "../../asn1/ros/ros-rej.cnf"
- descr = ep_strdup_printf("REJ: %s", problem_str);
+#line 10 "./asn1/ros/ros-rej.cnf"
+ descr = wmem_strdup_printf(wmem_packet_scope(), "REJ: %s", problem_str);
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);
int
dissect_h450_ros_ROS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 29 "../../asn1/h450-ros/h450-ros.cnf"
+#line 28 "./asn1/h450-ros/h450-ros.cnf"
DISSECTOR_ASSERT(actx->rose_ctx);
rose_ctx_clean_data(actx->rose_ctx);
/*--- End of included file: packet-h450-ros-fn.c ---*/
-#line 74 "../../asn1/h450-ros/packet-h450-ros-template.c"
+#line 79 "./asn1/h450-ros/packet-h450-ros-template.c"
/*--- proto_register_h450_ros -----------------------------------------------*/
void proto_register_h450_ros(void) {
static hf_register_info hf[] = {
/*--- Included file: packet-h450-ros-hfarr.c ---*/
-#line 1 "../../asn1/h450-ros/packet-h450-ros-hfarr.c"
+#line 1 "./asn1/h450-ros/packet-h450-ros-hfarr.c"
{ &hf_h450_ros_local,
{ "local", "h450.ros.local",
FT_INT32, BASE_DEC, NULL, 0,
"ReturnErrorProblem", HFILL }},
/*--- End of included file: packet-h450-ros-hfarr.c ---*/
-#line 81 "../../asn1/h450-ros/packet-h450-ros-template.c"
+#line 86 "./asn1/h450-ros/packet-h450-ros-template.c"
};
/* List of subtrees */
static gint *ett[] = {
/*--- Included file: packet-h450-ros-ettarr.c ---*/
-#line 1 "../../asn1/h450-ros/packet-h450-ros-ettarr.c"
+#line 1 "./asn1/h450-ros/packet-h450-ros-ettarr.c"
&ett_h450_ros_Code,
&ett_h450_ros_ROS,
&ett_h450_ros_Invoke,
&ett_h450_ros_T_problem,
/*--- End of included file: packet-h450-ros-ettarr.c ---*/
-#line 86 "../../asn1/h450-ros/packet-h450-ros-template.c"
+#line 91 "./asn1/h450-ros/packet-h450-ros-template.c"
};
static ei_register_info ei[] = {