Wireshark-bugs: [Wireshark-bugs] [Bug 9929] New: Infiniband dissector does not show the payload
Date: Thu, 27 Mar 2014 14:23:41 +0000
Bug ID 9929
Summary Infiniband dissector does not show the payload
Classification Unclassified
Product Wireshark
Version Git
Hardware All
OS All
Status UNCONFIRMED
Severity Major
Priority Low
Component Dissection engine (libwireshark)
Assignee bugzilla-admin@wireshark.org
Reporter netshark@ameissnet.com

Created attachment 12660 [details]
IB packets with payload

Build Information:
TShark 1.11.3 (wireshark-1.11.3-rc1-2129-gf57aaf4-dirty from master)

Copyright 1998-2014 Gerald Combs <gerald@wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.38.2, with libpcap, with libz 1.2.8, with POSIX
capabilities (Linux), with libnl 3, with SMI 0.4.8, with c-ares 1.9.1, with Lua
5.1, without Python, with GnuTLS 2.12.23, with Gcrypt 1.5.3, with MIT Kerberos,
without GeoIP.

Running on Linux 3.10.25-gentoo, with locale en_US.UTF-8, with libpcap version
1.3.0, with libz 1.2.8.
Intel(R) Xeon(R) CPU           W3565  @ 3.20GHz

Built using gcc 4.7.3.
--
In trying to look at some IB captures, I noticed that any payload data included
was never displayed in the packet details (tree) pane. It obviously appears in
the bytes pane - but nothing in the details pane. This is with both 1.10.6 and
the latest git master.

I did some poking around and debugging, and it appears that the "data"
dissector is always called with a NULL tree.

Now, I'm not that familiar with IB. However, I was able to get the payload data
displayed by making a change in epan/dissectors/packet-infiniband.c, in
dissect_infiniband_common(), changing

    /* Get the parent tree from the ERF dissector.  We don't want to nest under
ERF */
    if (tree && tree->parent)
    {
        /* Set the normal tree outside of ERF */
        tree = tree->parent;
        /* Set a global reference for nested protocols */
        top_tree = tree;
    }

to

    /* Get the parent tree from the ERF dissector.  We don't want to nest under
ERF */
    if (tree && tree->parent)
    {
        /* Set the normal tree outside of ERF */
        tree = tree->parent;
        /* Set a global reference for nested protocols */
        top_tree = tree;
    }
    else
    {
        top_tree = tree;
    }

Debugging showed that tree->parent was always NULL. Making this change caused
the Data to be displayed at the same tree level as Frame, Extensible Record
Format, and Infiniband. Not sure this is correct, since the data is actually
within the Infiniband subtree (following the AETH header, but before the
Invariant CRC).

In order to correctly parse the attached capture file, the Infiniband
preference "Attempt to identify and parse encapsulated IBA payloads" should be
unchecked.


You are receiving this mail because:
  • You are watching all bug changes.