summaryrefslogtreecommitdiffstats
path: root/src/packet-isi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/packet-isi.c')
-rw-r--r--src/packet-isi.c26
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;
}