aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ieee80211-radiotap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2015-06-28 12:43:33 -0700
committerGuy Harris <guy@alum.mit.edu>2015-06-28 19:44:07 +0000
commitb9145bc836daafd6cad960b95e9d2144781e7317 (patch)
treeda80f67670fce4a90aca67ddc28272a4d620f0d8 /epan/dissectors/packet-ieee80211-radiotap.c
parent8aaf42d2b11b993d54283a5944841813a06881d5 (diff)
"Short preamble" is 802.11[bg]-only, so put it in the PHY-specifc info.
We're already only setting it for 11b and 11g; this makes it a bit cleaner, e.g. we don't need to say "oh, wait, we *don't* have short preamble" for 11n and 11ac. Change-Id: Idcf3e8c93d6a417f0319e4bd33247b98f07b6052 Reviewed-on: https://code.wireshark.org/review/9209 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/dissectors/packet-ieee80211-radiotap.c')
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap.c63
1 files changed, 30 insertions, 33 deletions
diff --git a/epan/dissectors/packet-ieee80211-radiotap.c b/epan/dissectors/packet-ieee80211-radiotap.c
index 58452aae13..0629cab41d 100644
--- a/epan/dissectors/packet-ieee80211-radiotap.c
+++ b/epan/dissectors/packet-ieee80211-radiotap.c
@@ -963,30 +963,31 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
case IEEE80211_CHAN_B:
phdr.phy = PHDR_802_11_PHY_11B;
+ phdr.phy_info.info_11b.presence_flags = 0;
if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ phdr.phy_info.info_11b.presence_flags |= PHDR_802_11B_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11b.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
}
break;
case IEEE80211_CHAN_PUREG:
phdr.phy = PHDR_802_11_PHY_11G;
- if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
- }
phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
phdr.phy_info.info_11g.mode = PHDR_802_11G_MODE_NORMAL;
+ if (have_rflags) {
+ phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ }
break;
case IEEE80211_CHAN_G:
phdr.phy = PHDR_802_11_PHY_11G;
- if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
- }
phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
phdr.phy_info.info_11g.mode = PHDR_802_11G_MODE_NORMAL;
+ if (have_rflags) {
+ phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ }
break;
case IEEE80211_CHAN_108A:
@@ -998,12 +999,12 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
case IEEE80211_CHAN_108PUREG:
phdr.phy = PHDR_802_11_PHY_11G;
- if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
- }
phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
phdr.phy_info.info_11g.mode = PHDR_802_11G_MODE_SUPER_G;
+ if (have_rflags) {
+ phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ }
break;
}
if (tree) {
@@ -1200,30 +1201,31 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
case IEEE80211_CHAN_B:
phdr.phy = PHDR_802_11_PHY_11B;
+ phdr.phy_info.info_11b.presence_flags = 0;
if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ phdr.phy_info.info_11b.presence_flags |= PHDR_802_11B_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11b.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
}
break;
case IEEE80211_CHAN_PUREG:
phdr.phy = PHDR_802_11_PHY_11G;
- if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
- }
phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
phdr.phy_info.info_11g.mode = PHDR_802_11G_MODE_NORMAL;
+ if (have_rflags) {
+ phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ }
break;
case IEEE80211_CHAN_G:
phdr.phy = PHDR_802_11_PHY_11G;
- if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
- }
phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
phdr.phy_info.info_11g.mode = PHDR_802_11G_MODE_NORMAL;
+ if (have_rflags) {
+ phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ }
break;
case IEEE80211_CHAN_108A:
@@ -1235,12 +1237,12 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
case IEEE80211_CHAN_108PUREG:
phdr.phy = PHDR_802_11_PHY_11G;
- if (have_rflags) {
- phdr.presence_flags |= PHDR_802_11_HAS_SHORT_PREAMBLE;
- phdr.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
- }
phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
phdr.phy_info.info_11g.mode = PHDR_802_11G_MODE_SUPER_G;
+ if (have_rflags) {
+ phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
+ }
break;
case IEEE80211_CHAN_ST:
@@ -1256,8 +1258,6 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
case IEEE80211_CHAN_G|IEEE80211_CHAN_HT40U:
case IEEE80211_CHAN_G|IEEE80211_CHAN_HT40D:
phdr.phy = PHDR_802_11_PHY_11N;
- /* 11n only has "short preamble" in 11b/11g mode */
- phdr.presence_flags &= ~PHDR_802_11_HAS_SHORT_PREAMBLE;
phdr.phy_info.info_11n.presence_flags = 0;
/*
@@ -1348,8 +1348,6 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
*/
if (mcs_known != 0) {
phdr.phy = PHDR_802_11_PHY_11N;
- /* 11n only has "short preamble" in 11b/11g mode */
- phdr.presence_flags &= ~PHDR_802_11_HAS_SHORT_PREAMBLE;
phdr.phy_info.info_11n.presence_flags = 0;
}
@@ -1548,7 +1546,6 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
*/
if (known != 0) {
phdr.phy = PHDR_802_11_PHY_11AC;
- phdr.presence_flags &= ~PHDR_802_11_HAS_SHORT_PREAMBLE;
phdr.phy_info.info_11ac.presence_flags = 0;
}
vht_flags = tvb_get_guint8(tvb, offset + 2);