diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-11-16 11:29:05 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-11-16 11:29:05 +0000 |
commit | c1e5be52ade7ed16249c17937643c9167bc9b6af (patch) | |
tree | 482a35e7737b91de66e6d56c7c2ac8db784b049f /epan/dissectors/packet-dnp.c | |
parent | d93bf350b59e4fdce4948393d70028530409f1c7 (diff) |
From Chris Bontje:
DNP3 - Incorrect Information Column Display for "Read" Function Code.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7977
svn path=/trunk/; revision=46039
Diffstat (limited to 'epan/dissectors/packet-dnp.c')
-rw-r--r-- | epan/dissectors/packet-dnp.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/epan/dissectors/packet-dnp.c b/epan/dissectors/packet-dnp.c index 1b3662c523..b228decfc4 100644 --- a/epan/dissectors/packet-dnp.c +++ b/epan/dissectors/packet-dnp.c @@ -2586,11 +2586,30 @@ dissect_dnp3_al(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } /* Update the col info if there were class reads */ - col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Class "); - for (i = 0; i < 4; i++) { - if (al_class & (1 << i)) { - col_append_fstr(pinfo->cinfo, COL_INFO, "%u", i); - } + if (al_class != 0) { + col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Class "); + for (i = 0; i < 4; i++) { + if (al_class & (1 << i)) { + col_append_fstr(pinfo->cinfo, COL_INFO, "%u", i); + } + } + } + + /* For reads for specific object types, bit-mask out the first byte and use that to determine the column info to add */ + switch(obj_type & 0xFF00) { + case AL_OBJ_BI_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Binary Input"); break; + case AL_OBJ_BIC_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Binary Input Change"); break; + case AL_OBJ_2BI_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Double-bit Input"); break; + case AL_OBJ_BO_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Binary Output"); break; + case AL_OBJ_CTR_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Counter"); break; + case AL_OBJ_FCTR_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Frozen Counter"); break; + case AL_OBJ_CTRC_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Counter Change"); break; + case AL_OBJ_FCTRC_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Frozen Counter Change"); break; + case AL_OBJ_AI_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Analog Input"); break; + case AL_OBJ_AIC_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Analog Input Change"); break; + case AL_OBJ_AO_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Analog Output"); break; + case AL_OBJ_AOC_ALL: col_append_sep_fstr(pinfo->cinfo, COL_INFO, NULL, "Analog Output Change"); break; + default: break; } break; |