On Fri, Aug 21, 2015 at 7:14 PM, Guy Harris <g...@alum.mit.edu> wrote:
>
> On Aug 21, 2015, at 7:34 AM, Jeff Morriss <jeff.morriss...@gmail.com> wrote:
>
>> It appears that the 802.11 dissector calls 
>> proto_tree_traverse_post_order()/is_80211ad() in order find the value of a 
>> field (hf) named "Channel frequency"; if the value is one of the AD 
>> frequencies then the dissector, well, treats it as AD.
>
> The only fields named "Channel frequency" are radiotap fields for Channel and 
> XChannel.
>
> However, the current trunk version of the radiotap dissector puts the channel 
> frequency into a struct ieee_802_11_phdr structure, and when it's done it 
> calls the "common 802.11 radio information" dissector and passes it a pointer 
> to that structure as the data argument; that dissector then calls the 802.11 
> dissector and passes the struct ieee_802_11_phdr pointer on to the 802.11 
> dissector.
>
> So if the 802.11 dissector in the trunk wants to know the frequency on which 
> the packet arrived, it should just check whether the 
> PHDR_802_11_HAS_FREQUENCY flag is set in the presence_flags member of the 
> struct ieee_802_11_phdr structure and, if so, use the frequency member of 
> that structure.
>
> Then again, the struct ieee_802_11_phdr structure *also* has a phy field, and 
> it can currently be one of:
>
>         PHDR_802_11_PHY_UNKNOWN if the PHY for the packet is unknown;
>
>         PHDR_802_11_PHY_11_FHSS if it's legacy 802.11 FHSS;
>
>         PHDR_802_11_PHY_11_IR if it's legacy 802.11 infrared;
>
>         PHDR_802_11_PHY_11_DSSS if it's legacy 802.11 DSSS;
>
>         PHDR_802_11_PHY_11B if it's 11b;
>
>         PHDR_802_11_PHY_11A if it's 11a;
>
>         PHDR_802_11_PHY_11G if it's 11g;
>
>         PHDR_802_11_PHY_11N if it's 11n;
>
>         PHDR_802_11_PHY_11AC if it's 11ac;
>
> and we could add PHDR_802_11_PHY_11AD and have the "common 802.11 radio 
> information" dissector set the phy field to PHDR_802_11_PHY_11AD if the 
> frequency field is present and is in the 60 MHz band.
>
> Then the 802.11 dissector can just check for the phy being 
> PHDR_802_11_PHY_11AD.
>
>> Isn't this backwards from how Wireshark normally does things?  Shouldn't we 
>> be storing the channel frequency somewhere (historically that would be in 
>> pinfo though there's been some effort to get stuff out of there) so later 
>> dissectors can (easily) get the value?
>
> Yes, and we even have a place to store it (and to store the PHY, while we're 
> at it.

Hmmm, I should have looked more carefully ... that looks like the best
way to deal with the issue.

OK, I agree we should define PHDR_802_11_PHY11AD and set that
correctly based on the frequencies. I already have a macro for
checking the 11AD frequencies.

I will have to do a significant overhaul, however, to pass that down
to various functions, so it might be easier to do a p_add_proto_data
in the _common function to pass the phdr structure along ...

-- 
Regards,
Richard Sharpe
(何以解憂?唯有杜康。--曹操)
___________________________________________________________________________
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-requ...@wireshark.org?subject=unsubscribe

Reply via email to