aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dnp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-11-16 11:29:05 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-11-16 11:29:05 +0000
commitc1e5be52ade7ed16249c17937643c9167bc9b6af (patch)
tree482a35e7737b91de66e6d56c7c2ac8db784b049f /epan/dissectors/packet-dnp.c
parentd93bf350b59e4fdce4948393d70028530409f1c7 (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.c29
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;