diff options
Diffstat (limited to 'src/packet-isi.c')
-rw-r--r-- | src/packet-isi.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/packet-isi.c b/src/packet-isi.c index e86b429..07b0b31 100644 --- a/src/packet-isi.c +++ b/src/packet-isi.c @@ -23,7 +23,6 @@ #include <glib.h> #include <epan/prefs.h> #include <epan/packet.h> -#include <epan/expert.h> #include "handler.h" #include "packet-isi.h" @@ -330,6 +329,8 @@ gint32 ett_isi_network_gsm_band_info = -1; gint32 ett_isi_nameservice_entry = -1; gint32 ett_isi_info = -1; +expert_field ei_isi_unknown_packet = EI_INIT; + #ifdef ISI_USB /* Experimental approach based upon the one used for PPP*/ static gboolean dissect_usb_isi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { @@ -413,6 +414,10 @@ void proto_register_isi(void) { { "Subpacket Length", "isi.sub.length", FT_UINT8, BASE_DEC, NULL, 0x0, "Subpacket Length", HFILL }}, }; + static ei_register_info ei[] = { + { &ei_isi_unknown_packet, { "isi.unknown.packet", PI_UNDECODED, PI_WARN, "Unknown packet", EXPFILL }}, + }; + static gint *ett[] = { &ett_isi, &ett_isi_msg, @@ -421,8 +426,13 @@ void proto_register_isi(void) { &ett_isi_info, }; + expert_module_t* expert_isi; + proto_isi = proto_register_protocol("Intelligent Service Interface", "ISI", "isi"); + expert_isi = expert_register_protocol(proto_isi); + expert_register_field_array(expert_isi, ei, array_length(ei)); + proto_register_field_array(proto_isi, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); register_dissector("isi", dissect_isi, proto_isi); @@ -492,11 +502,8 @@ static void dissect_isi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint8 resource = 0; guint16 length = 0; - if(check_col(pinfo->cinfo, COL_PROTOCOL)) - col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISI"); - - if(check_col(pinfo->cinfo,COL_INFO)) - col_clear(pinfo->cinfo,COL_INFO); + col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISI"); + col_clear(pinfo->cinfo,COL_INFO); if(tree) { /* If tree != NULL, we're doing a detailed dissection of the @@ -520,11 +527,6 @@ static void dissect_isi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dst = tvb_get_guint8(tvb, 0); src = tvb_get_guint8(tvb, 1); - if(tvb_length(tvb) - 8 < length) { - expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "Broken Length (%d > %d)", length, tvb_length(tvb)-8); - length = tvb_length(tvb) - 8; - } - col_set_str(pinfo->cinfo, COL_DEF_SRC, val_to_str_const(src, hf_isi_device, "Unknown")); col_set_str(pinfo->cinfo, COL_DEF_DST, val_to_str_const(dst, hf_isi_device, "Unknown")); @@ -608,7 +610,7 @@ void dissect_isi_common(const char *resource, tvbuff_t *tvb, packet_info *pinfo, c_subcmd = "Service Not Authenticated Response"; break; default: - //expert_add_info_format(pinfo, item, PI_PROTOCOL, PI_WARN, "unsupported packet"); + //expert_add_info_format(pinfo, item, &ei_isi_unknown_packet, "unsupported packet"); break; } |