aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/gsm_map
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-06-03 03:42:36 +0000
committerMichael Mann <mmann78@netscape.net>2013-06-03 03:42:36 +0000
commit7fe5422c4b4cd58dd7ffeebd984e7668cf61ab5d (patch)
treed1e444e2c6fa430fb2b7d048aafbbbefe8701641 /asn1/gsm_map
parenta28cbb7c8a83362e74b7e3db07c49d551d519983 (diff)
downloadwireshark-7fe5422c4b4cd58dd7ffeebd984e7668cf61ab5d.tar.gz
wireshark-7fe5422c4b4cd58dd7ffeebd984e7668cf61ab5d.tar.bz2
wireshark-7fe5422c4b4cd58dd7ffeebd984e7668cf61ab5d.zip
Convert ASN.1 dissectors to use filterable expert info.
NOTE: Kerberos ASN.1 template was updated, but not generated to source. svn path=/trunk/; revision=49707
Diffstat (limited to 'asn1/gsm_map')
-rw-r--r--asn1/gsm_map/packet-gsm_map-template.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/asn1/gsm_map/packet-gsm_map-template.c b/asn1/gsm_map/packet-gsm_map-template.c
index ea39f5d1b3..76a131a76b 100644
--- a/asn1/gsm_map/packet-gsm_map-template.c
+++ b/asn1/gsm_map/packet-gsm_map-template.c
@@ -183,6 +183,11 @@ static gint ett_gsm_map_ericsson_locationInformation = -1;
#include "packet-gsm_map-ett.c"
+static expert_field ei_gsm_map_unknown_sequence3 = EI_INIT;
+static expert_field ei_gsm_map_unknown_sequence = EI_INIT;
+static expert_field ei_gsm_map_unknown_parameter = EI_INIT;
+static expert_field ei_gsm_map_unknown_invokeData = EI_INIT;
+
static dissector_table_t sms_dissector_table; /* SMS TPDU */
static dissector_handle_t data_handle;
static dissector_handle_t ranap_handle;
@@ -982,24 +987,21 @@ static int dissect_mc_message(tvbuff_t *tvb,
offset= (sequence3) (implicit_seq3, tvb, offset, actx, tree, hf_index_seq3);
} else {
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented [3] sequence, cannot decode");
- proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
- expert_add_info_format(actx->pinfo, cause, PI_UNDECODED, PI_ERROR, "Unknown or not implemented [3] sequence");
+ expert_add_info(actx->pinfo, cause, &ei_gsm_map_unknown_sequence3);
}
} else if (octet == 0x30) {
if (sequence != NULL) {
offset= (sequence) (implicit_seq, tvb, 0, actx, tree, hf_index_seq);
} else {
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented sequence");
- proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
- expert_add_info_format(actx->pinfo, cause, PI_UNDECODED, PI_ERROR, "Unknown or not implemented sequence");
+ expert_add_info(actx->pinfo, cause, &ei_gsm_map_unknown_sequence);
}
} else {
if (parameter != NULL) {
offset= (parameter) (implicit_param, tvb, offset, actx, tree, hf_index_param);
} else {
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented parameter");
- proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
- expert_add_info_format(actx->pinfo, cause, PI_UNDECODED, PI_ERROR, "Unknown or not implemented parameter");
+ expert_add_info(actx->pinfo, cause, &ei_gsm_map_unknown_parameter);
}
}
return offset;
@@ -1356,8 +1358,7 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_
default:
if(!dissector_try_uint(map_prop_arg_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
+ expert_add_info_format_text(actx->pinfo, cause, &ei_gsm_map_unknown_invokeData, "Unknown invokeData %d",opcode);
}
offset+= tvb_length_remaining(tvb,offset);
break;
@@ -1664,8 +1665,7 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset,
default:
if(!dissector_try_uint(map_prop_res_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
+ expert_add_info_format_text(actx->pinfo, cause, &ei_gsm_map_unknown_invokeData, "Unknown invokeData %d",opcode);
}
offset+= tvb_length_remaining(tvb,offset);
break;
@@ -1829,8 +1829,7 @@ static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset,
default:
if(!dissector_try_uint(map_prop_err_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){
cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob");
- proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
- expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",errorCode);
+ expert_add_info_format_text(actx->pinfo, cause, &ei_gsm_map_unknown_invokeData, "Unknown invokeData %d",errorCode);
}
offset+= tvb_length_remaining(tvb,offset);
break;
@@ -2315,6 +2314,7 @@ void proto_reg_handoff_gsm_map(void) {
/*--- proto_register_gsm_map -------------------------------------------*/
void proto_register_gsm_map(void) {
module_t *gsm_map_module;
+ expert_module_t* expert_gsm_map;
/* List of fields */
static hf_register_info hf[] = {
@@ -2646,6 +2646,13 @@ void proto_register_gsm_map(void) {
#include "packet-gsm_map-ettarr.c"
};
+ static ei_register_info ei[] = {
+ { &ei_gsm_map_unknown_sequence3, { "gsm_map.unknown.sequence3", PI_UNDECODED, PI_ERROR, "Unknown or not implemented [3] sequence", EXPFILL }},
+ { &ei_gsm_map_unknown_sequence, { "gsm_map.unknown.sequence", PI_UNDECODED, PI_ERROR, "Unknown or not implemented sequence", EXPFILL }},
+ { &ei_gsm_map_unknown_parameter, { "gsm_map.unknown.parameter", PI_UNDECODED, PI_ERROR, "Unknown or not implemented parameter", EXPFILL }},
+ { &ei_gsm_map_unknown_invokeData, { "gsm_map.unknown.invokeData", PI_MALFORMED, PI_WARN, "Unknown invokeData", EXPFILL }},
+ };
+
static const enum_val_t application_context_modes[] = {
{"Use Application Context from the trace", "Use application context from the trace", APPLICATON_CONTEXT_FROM_TRACE},
{"Treat as AC 1", "Treat as AC 1", 1},
@@ -2663,6 +2670,8 @@ void proto_register_gsm_map(void) {
/* Register fields and subtrees */
proto_register_field_array(proto_gsm_map, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
+ expert_gsm_map = expert_register_protocol(proto_gsm_map);
+ expert_register_field_array(expert_gsm_map, ei, array_length(ei));
sms_dissector_table = register_dissector_table("gsm_map.sms_tpdu",
"GSM SMS TPDU", FT_UINT8,