aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tn3270.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2012-04-09 14:17:49 +0000
committerBill Meier <wmeier@newsguy.com>2012-04-09 14:17:49 +0000
commit70fcc43cc8ca796255ae592461aab3db3b045361 (patch)
tree511203ba56cdd435abbdd377474ddb711074c835 /epan/dissectors/packet-tn3270.c
parent6407baee3286a4a189fd47dd5018837387b9dfd0 (diff)
Read_Buffer, Read_Modified & Read_Modified_All are valid outbound commands.
(Fixes issue reported in https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6854#c8) Also: Rename 3270 "command" defines to reflect Local vs Remote. svn path=/trunk/; revision=41987
Diffstat (limited to 'epan/dissectors/packet-tn3270.c')
-rw-r--r--epan/dissectors/packet-tn3270.c125
1 files changed, 70 insertions, 55 deletions
diff --git a/epan/dissectors/packet-tn3270.c b/epan/dissectors/packet-tn3270.c
index d1789b0e8c..5b48115ce9 100644
--- a/epan/dissectors/packet-tn3270.c
+++ b/epan/dissectors/packet-tn3270.c
@@ -96,51 +96,52 @@
*/
/*--- 3270 Command Codes - "Local Attachment" ----- */
-#define CC_W 0x01
-#define CC_EW 0x05
-#define CC_EWA 0x0D
-#define CC_EAU 0x0F
-#define CC_WSF 0x11
+#define CC_LCL_W 0x01
+#define CC_LCL_EW 0x05
+#define CC_LCL_EWA 0x0D
+#define CC_LCL_EAU 0x0F
+#define CC_LCL_WSF 0x11
-#define CC_RB 0x02
-#define CC_RM 0x06
-#define CC_RMA 0x0E
+#define CC_LCL_RB 0x02
+#define CC_LCL_RM 0x06
+#define CC_LCL_RMA 0x0E /* XXX Not valid ?? See 3174 Function Description 2.1.4 */
#if 0 /* ??? */
#define CC_NOP 0x03
#endif
-/*--- 3.3 SNA 3270 Command Codes - "Remote Attachment" ----- */
-#define CC_SNA_W 0xF1
-#define CC_SNA_EW 0xF5
-#define CC_SNA_EWA 0x7E
-#define CC_SNA_EAU 0x6F
-#define CC_SNA_WSF 0xF3
+/*--- 3.3 3270 Command Codes - "Remote Attachment" ----- */
+#define CC_RMT_W 0xF1
+#define CC_RMT_EW 0xF5
+#define CC_RMT_EWA 0x7E
+#define CC_RMT_EAU 0x6F
+#define CC_RMT_WSF 0xF3
-#define CC_SNA_RB 0xF2
-#define CC_SNA_RM 0xF6
-#define CC_SNA_RMA 0x6E
+#define CC_RMT_RB 0xF2
+#define CC_RMT_RM 0xF6
+#define CC_RMT_RMA 0x6E
#define CC_SNA_BSC 0xF7 /* local copy in a BSC environment */
static const value_string vals_command_codes[] = {
- { CC_W, "Write (Local)" },
- { CC_EW, "Erase/Write (Local)" },
- { CC_EWA, "Erase/Write Alternate (Local)" },
- { CC_EAU, "Erase All Unprotected (Local)" },
- { CC_WSF, "Write Structured Field (Local)" },
- { CC_RB, "Read Buffer (Local)" },
- { CC_RM, "Read Modified (Local)" },
- { CC_RMA, "Read Modified All (Local)" },
- { CC_SNA_W, "Write" },
- { CC_SNA_EW, "Erase/Write" },
- { CC_SNA_EWA, "Erase/Write Alternate" },
- { CC_SNA_EAU, "Erase All Unprotected" },
- { CC_SNA_WSF, "Write Structured Field" },
- { CC_SNA_RB, "Read Buffer" },
- { CC_SNA_RM, "Read Modified" },
- { CC_SNA_RMA, "Read Modified All" },
+
+ { CC_LCL_W, "Write (Local)" },
+ { CC_LCL_EW, "Erase/Write (Local)" },
+ { CC_LCL_EWA, "Erase/Write Alternate (Local)" },
+ { CC_LCL_EAU, "Erase All Unprotected (Local)" },
+ { CC_LCL_WSF, "Write Structured Field (Local)" },
+ { CC_LCL_RB, "Read Buffer (Local)" },
+ { CC_LCL_RM, "Read Modified (Local)" },
+ { CC_LCL_RMA, "Read Modified All (Local)" },
+ { CC_RMT_W, "Write" },
+ { CC_RMT_EW, "Erase/Write" },
+ { CC_RMT_EWA, "Erase/Write Alternate" },
+ { CC_RMT_EAU, "Erase All Unprotected" },
+ { CC_RMT_WSF, "Write Structured Field" },
+ { CC_RMT_RB, "Read Buffer" },
+ { CC_RMT_RM, "Read Modified" },
+ { CC_RMT_RMA, "Read Modified All" },
{ CC_SNA_BSC, "BSC Copy" },
{ 0x00, NULL }
};
@@ -2088,14 +2089,15 @@ dissect_outbound_3270ds(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset,
ENC_BIG_ENDIAN);
offset += 2;
break;
- case CC_W:
- case CC_EW:
- case CC_EWA:
- case CC_EAU:
- case CC_SNA_W:
- case CC_SNA_EW:
- case CC_SNA_EWA:
- case CC_SNA_EAU:
+ /* XXX: are "local" commands valid for Outbound 3270DS ? */
+ case CC_LCL_W:
+ case CC_LCL_EW:
+ case CC_LCL_EWA:
+ case CC_LCL_EAU:
+ case CC_RMT_W:
+ case CC_RMT_EW:
+ case CC_RMT_EWA:
+ case CC_RMT_EAU:
/* WCC */
if ((offset - start) < sf_body_length)
offset += dissect_wcc(tn3270_tree, tvb, offset);
@@ -5106,13 +5108,13 @@ dissect_outbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3
/* "state" needs to be associated in some manner with each */
/* frame of a conversation. */
switch (command_code) {
- case CC_EW:
- case CC_SNA_EW:
+ case CC_LCL_EW:
+ case CC_RMT_EW:
tn3270_info->rows = 24;
tn3270_info->cols = 80;
break;
- case CC_EWA:
- case CC_SNA_EWA:
+ case CC_LCL_EWA:
+ case CC_RMT_EWA:
tn3270_info->rows = tn3270_info->altrows;
tn3270_info->cols = tn3270_info->altcols;
break;
@@ -5121,14 +5123,14 @@ dissect_outbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3
}
switch (command_code) {
- case CC_W:
- case CC_EW:
- case CC_EWA:
- case CC_EAU:
- case CC_SNA_W:
- case CC_SNA_EW:
- case CC_SNA_EWA:
- case CC_SNA_EAU:
+ case CC_LCL_W:
+ case CC_LCL_EW:
+ case CC_LCL_EWA:
+ case CC_LCL_EAU:
+ case CC_RMT_W:
+ case CC_RMT_EW:
+ case CC_RMT_EWA:
+ case CC_RMT_EAU:
proto_tree_add_item(tn3270_tree,
hf_tn3270_command_code,
tvb, offset,
@@ -5139,8 +5141,8 @@ dissect_outbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3
offset += dissect_wcc(tn3270_tree, tvb, offset);
offset += dissect_orders_and_data(tn3270_tree, tvb, offset, tn3270_info);
break;
- case CC_WSF:
- case CC_SNA_WSF:
+ case CC_LCL_WSF:
+ case CC_RMT_WSF:
proto_tree_add_item(tn3270_tree,
hf_tn3270_command_code,
tvb, offset,
@@ -5149,6 +5151,19 @@ dissect_outbound_stream(proto_tree *tn3270_tree, tvbuff_t *tvb, gint offset, tn3
offset += 1;
offset += dissect_structured_fields(tn3270_tree, tvb, offset, tn3270_info, FALSE);
break;
+ case CC_LCL_RB:
+ case CC_LCL_RM:
+ case CC_LCL_RMA:
+ case CC_RMT_RB:
+ case CC_RMT_RM:
+ case CC_RMT_RMA:
+ proto_tree_add_item(tn3270_tree,
+ hf_tn3270_command_code,
+ tvb, offset,
+ 1,
+ ENC_BIG_ENDIAN);
+ offset += 1;
+ break;
default:
/* XXX: Add expert item ? */
proto_tree_add_text(tn3270_tree, tvb, offset, 1, "Bogus value: %u", command_code);