Wireshark-dev: Re: [Wireshark-dev] The ieee802.11 dissector is a steaming pile of ordure

From: Alexis La Goutte <alexis.lagoutte@xxxxxxxxx>
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@xxxxxxxxxxx> 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@xxxxxxxxxxxxx>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
            mailto:wireshark-dev-request@xxxxxxxxxxxxx?subject=unsubscribe