Wireshark-dev: Re: [Wireshark-dev] The ieee802.11 dissector is a steaming pile of ordure
From: Bill Meier <wmeier@xxxxxxxxxxx>
Date: Wed, 9 Sep 2015 12:11:11 -0400
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.