Wireshark mailing list archives

Re: The ieee802.11 dissector is a steaming pile of ordure


From: Alexis La Goutte <alexis.lagoutte () gmail com>
Date: Thu, 10 Sep 2015 09:42:21 +0200

Hi Richard (and Bill)

It is historic... at the first, there is only limited fixed field and
tagged field...
and on last 802.11 spec, there is > 100 tagged field...

If you have a solution to avoid a big switch...
i have already think to put each case on separate function... but for some
case, there is only 5 lines of code...

Regards,

On Wed, Sep 9, 2015 at 6:11 PM, Bill Meier <wmeier () newsguy com> wrote:

On 9/9/2015 12:03 PM, Bill Meier wrote:

On 9/9/2015 11:23 AM, Richard Sharpe wrote:

Take a look at epan/dissectors/packet-ieee80211.c!

Specifically, add_tagged_field.

That function is approximately 2,300 lines long and it consists of one
big switch statement with every arm containing open-coded statements
to add things to the proto tree.


It's even worse:

add_fixed_field() given a "fixed field number" does a linear search thru
a (large) table to to find the number (and the associated function
address) and then calls the function ...

One side effect: there are functions which aren't used but since they're
in the table, they're not flagged as unused by the compiler.

In several cases there is (or was) duplicate code elsewhere doing a
dissection similar to the unused "fixed field functions".

(I was working to fix all this but got a bit bored because I had to
spend time delving thru the 802211 spec trying to understand the code.
I guess I should at least do that work (unless you have a broader
solution in mind to handle both tagged and fixed fields ?)



Actually, I guess add_tagged_field and add_fixed_field are sort of doing
the same thing (just in different ways) with respect to the lookup.




___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
            mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe

Current thread: