Wireshark-dev: [Wireshark-dev] PATCH: Update LANforge protocol dissector.
I changed our LANforge protocol slightly..stealing 1 byte from the 'pattern' field
to support larger payload-length.
Attached is a patch against the latest wireshark svn to let wireshark decode this
properly.
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com
Index: epan/dissectors/packet-lanforge.c
===================================================================
--- epan/dissectors/packet-lanforge.c (revision 31458)
+++ epan/dissectors/packet-lanforge.c (working copy)
@@ -56,6 +56,8 @@
static int hf_lanforge_magic = -1;
static int hf_lanforge_src_session = -1;
static int hf_lanforge_dst_session = -1;
+static int hf_lanforge_pld_len_l = -1;
+static int hf_lanforge_pld_len_h = -1;
static int hf_lanforge_pld_len = -1;
static int hf_lanforge_pld_pattern = -1;
static int hf_lanforge_seq = -1;
@@ -78,6 +80,8 @@
guint32 offset = 0;
nstime_t tstamp;
guint32 tss;
+ guint32 tmpi;
+ guint32 pld_len = 0;
/* check for min size */
if(tvb_length(tvb) < 28) { /* Not a LANforge packet. */
@@ -119,12 +123,22 @@
proto_tree_add_item(lanforge_tree, hf_lanforge_dst_session, tvb, offset, 2, FALSE);
offset+=2;
- proto_tree_add_item(lanforge_tree, hf_lanforge_pld_len, tvb, offset, 2, FALSE);
+ pld_len = tvb_get_ntohs(tvb, offset);
+ tmp = proto_tree_add_item(lanforge_tree, hf_lanforge_pld_len_l, tvb, offset, 2, FALSE);
+ PROTO_ITEM_SET_GENERATED(tmp);
offset+=2;
- proto_tree_add_item(lanforge_tree, hf_lanforge_pld_pattern, tvb, offset, 2, FALSE);
- offset+=2;
+ tmpi = tvb_get_guint8(tvb, offset);
+ tmp = proto_tree_add_item(lanforge_tree, hf_lanforge_pld_len_h, tvb, offset, 1, FALSE);
+ PROTO_ITEM_SET_GENERATED(tmp);
+ offset+=1;
+ pld_len |= (tmpi << 16);
+ proto_tree_add_uint(lanforge_tree, hf_lanforge_pld_len, tvb, offset-3, 3, pld_len);
+
+ proto_tree_add_item(lanforge_tree, hf_lanforge_pld_pattern, tvb, offset, 1, FALSE);
+ offset+=1;
+
proto_tree_add_item(lanforge_tree, hf_lanforge_seq, tvb, offset, 4, FALSE);
offset+=4;
@@ -196,14 +210,30 @@
}
},
- { &hf_lanforge_pld_len,
+ { &hf_lanforge_pld_len_l,
{
- "Payload Length", "LANforge.pld-length",
+ "Payload Length(L)", "LANforge.pld-len-L",
FT_UINT16, BASE_DEC, NULL, 0x0,
- "The LANforge payload length", HFILL
+ "The LANforge payload length (low bytes)", HFILL
}
},
+ { &hf_lanforge_pld_len_h,
+ {
+ "Payload Length(H)", "LANforge.pld-len-H",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "The LANforge payload length (high byte)", HFILL
+ }
+ },
+
+ { &hf_lanforge_pld_len,
+ {
+ "Payload Length", "LANforge.pld-length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ "The LANforge payload length", HFILL
+ }
+ },
+
{ &hf_lanforge_pld_pattern,
{
"Payload Pattern", "LANforge.pld-pattern",