diff options
author | Michael Mann <mmann78@netscape.net> | 2013-06-03 03:42:36 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-06-03 03:42:36 +0000 |
commit | 7fe5422c4b4cd58dd7ffeebd984e7668cf61ab5d (patch) | |
tree | d1e444e2c6fa430fb2b7d048aafbbbefe8701641 /asn1/gsm_map | |
parent | a28cbb7c8a83362e74b7e3db07c49d551d519983 (diff) | |
download | wireshark-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.c | 33 |
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, |