aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorSimon Barber <simon.barber@meraki.net>2015-12-09 14:26:46 -0800
committerGuy Harris <guy@alum.mit.edu>2015-12-24 07:58:51 +0000
commitffa9e938e24779470c664ea8eca1e452ce025f97 (patch)
tree907bfdf175cdfd1ac3694b2ca9de9ca452f33020 /epan/dissectors
parent1ffd4398504d5bc69c322fd64e826fa7eb22ed3b (diff)
Refactor 802.11 radio flags.
The use of a flag field here is aesthetically unpleasing when the flags are referred to frequently. Convert these into bitfield entries. Change-Id: I6f47e31558439dfd343ec7f856d04480366a1237 Reviewed-on: https://code.wireshark.org/review/12511 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-aruba-erm.c8
-rw-r--r--epan/dissectors/packet-cisco-wids.c3
-rw-r--r--epan/dissectors/packet-ieee80211-netmon.c22
-rw-r--r--epan/dissectors/packet-ieee80211-prism.c6
-rw-r--r--epan/dissectors/packet-ieee80211-radio.c81
-rw-r--r--epan/dissectors/packet-ieee80211-radiotap.c107
-rw-r--r--epan/dissectors/packet-ieee80211-wlancap.c40
-rw-r--r--epan/dissectors/packet-ieee80211.c15
-rw-r--r--epan/dissectors/packet-ixveriwave.c25
-rw-r--r--epan/dissectors/packet-peekremote.c37
-rw-r--r--epan/dissectors/packet-ppi.c43
11 files changed, 181 insertions, 206 deletions
diff --git a/epan/dissectors/packet-aruba-erm.c b/epan/dissectors/packet-aruba-erm.c
index 19004302f6..65540b4b23 100644
--- a/epan/dissectors/packet-aruba-erm.c
+++ b/epan/dissectors/packet-aruba-erm.c
@@ -285,13 +285,11 @@ dissect_aruba_erm_type3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
offset = dissect_aruba_erm_pcap(tvb, pinfo, aruba_erm_tree, offset);
+ memset(&phdr, 0, sizeof(phdr));
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags =
- PHDR_802_11_HAS_DATA_RATE|
- PHDR_802_11_HAS_CHANNEL|
- PHDR_802_11_HAS_SIGNAL_PERCENT;
+ phdr.has_data_rate = TRUE;
data_rate = tvb_get_ntohs(tvb, offset);
phdr.data_rate = data_rate;
proto_tree_add_item(aruba_erm_tree, hf_aruba_erm_data_rate, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -304,10 +302,12 @@ dissect_aruba_erm_type3(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
offset += 2;
proto_tree_add_item_ret_uint(aruba_erm_tree, hf_aruba_erm_channel, tvb, offset, 1, ENC_BIG_ENDIAN, &channel);
+ phdr.has_channel = TRUE;
phdr.channel = channel;
offset += 1;
proto_tree_add_item_ret_uint(aruba_erm_tree, hf_aruba_erm_signal_strength, tvb, offset, 1, ENC_BIG_ENDIAN, &signal_strength);
+ phdr.has_signal_percent = TRUE;
phdr.signal_percent = signal_strength;
offset += 1;
diff --git a/epan/dissectors/packet-cisco-wids.c b/epan/dissectors/packet-cisco-wids.c
index c6e86c9953..90505c383f 100644
--- a/epan/dissectors/packet-cisco-wids.c
+++ b/epan/dissectors/packet-cisco-wids.c
@@ -90,15 +90,16 @@ dissect_cwids(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
ti = proto_tree_add_item(tree, proto_cwids, tvb, offset, 28, ENC_NA);
cwids_tree = proto_item_add_subtree(ti, ett_cwids);
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = 0; /* no FCS */
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = PHDR_802_11_HAS_CHANNEL;
proto_tree_add_item(cwids_tree, hf_cwids_version, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
proto_tree_add_item(cwids_tree, hf_cwids_unknown1, tvb, offset, 7, ENC_NA);
offset += 7;
+ phdr.has_channel = TRUE;
phdr.channel = tvb_get_guint8(tvb, offset);
proto_tree_add_item(cwids_tree, hf_cwids_channel, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
diff --git a/epan/dissectors/packet-ieee80211-netmon.c b/epan/dissectors/packet-ieee80211-netmon.c
index a91a2fb4fa..8943f51a96 100644
--- a/epan/dissectors/packet-ieee80211-netmon.c
+++ b/epan/dissectors/packet-ieee80211-netmon.c
@@ -163,6 +163,8 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
* uPhyId?
*/
phy_type = tvb_get_letohl(tvb, offset);
+ memset(&phdr->phy_info, 0, sizeof(phdr->phy_info));
+
switch (phy_type) {
case PHY_TYPE_UNKNOWN:
@@ -171,7 +173,6 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
case PHY_TYPE_FHSS:
phdr->phy = PHDR_802_11_PHY_11_FHSS;
- phdr->phy_info.info_11_fhss.presence_flags = 0;
break;
case PHY_TYPE_IR_BASEBAND:
@@ -184,27 +185,22 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
case PHY_TYPE_HR_DSSS:
phdr->phy = PHDR_802_11_PHY_11B;
- phdr->phy_info.info_11b.presence_flags = 0;
break;
case PHY_TYPE_OFDM:
phdr->phy = PHDR_802_11_PHY_11A;
- phdr->phy_info.info_11a.presence_flags = 0;
break;
case PHY_TYPE_ERP:
phdr->phy = PHDR_802_11_PHY_11G;
- phdr->phy_info.info_11g.presence_flags = 0;
break;
case PHY_TYPE_HT:
phdr->phy = PHDR_802_11_PHY_11N;
- phdr->phy_info.info_11n.presence_flags = 0;
break;
case PHY_TYPE_VHT:
phdr->phy = PHDR_802_11_PHY_11AC;
- phdr->phy_info.info_11ac.presence_flags = 0;
break;
default:
@@ -227,7 +223,7 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
} else {
guint frequency;
- phdr->presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr->has_channel = TRUE;
phdr->channel = channel;
proto_tree_add_uint(wlan_tree, hf_netmon_802_11_channel,
tvb, offset, 4, channel);
@@ -249,19 +245,19 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
break;
}
if (frequency != 0) {
- phdr->presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr->has_frequency = TRUE;
phdr->frequency = frequency;
}
}
} else {
- phdr->presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr->has_frequency = TRUE;
phdr->frequency = channel;
proto_tree_add_uint_format_value(wlan_tree, hf_netmon_802_11_frequency,
tvb, offset, 4, channel,
"%u Mhz", channel);
calc_channel = ieee80211_mhz_to_chan(channel);
if (calc_channel != -1) {
- phdr->presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr->has_channel = TRUE;
phdr->channel = calc_channel;
}
}
@@ -280,7 +276,7 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
tvb, offset, 4, rssi,
"Unknown");
} else {
- phdr->presence_flags |= PHDR_802_11_HAS_SIGNAL_DBM;
+ phdr->has_signal_dbm = TRUE;
phdr->signal_dbm = rssi;
proto_tree_add_int_format_value(wlan_tree, hf_netmon_802_11_rssi,
tvb, offset, 4, rssi,
@@ -297,7 +293,7 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
tvb, offset, 1, rate,
"Unknown");
} else {
- phdr->presence_flags |= PHDR_802_11_HAS_DATA_RATE;
+ phdr->has_data_rate = TRUE;
phdr->data_rate = rate;
proto_tree_add_uint_format_value(wlan_tree, hf_netmon_802_11_datarate,
tvb, offset, 1, rate,
@@ -312,7 +308,7 @@ dissect_netmon_802_11(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
*
* If so, should this check the presense flag in flags?
*/
- phdr->presence_flags |= PHDR_802_11_HAS_TSF_TIMESTAMP;
+ phdr->has_tsf_timestamp = TRUE;
phdr->tsf_timestamp = tvb_get_letoh64(tvb, offset);
proto_tree_add_item(wlan_tree, hf_netmon_802_11_timestamp, tvb, offset, 8,
ENC_LITTLE_ENDIAN);
diff --git a/epan/dissectors/packet-ieee80211-prism.c b/epan/dissectors/packet-ieee80211-prism.c
index 828b50feba..1122081b04 100644
--- a/epan/dissectors/packet-ieee80211-prism.c
+++ b/epan/dissectors/packet-ieee80211-prism.c
@@ -311,11 +311,11 @@ dissect_prism(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
}
/* We don't have any 802.11 metadata yet. */
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = -1;
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "Prism");
col_clear(pinfo->cinfo, COL_INFO);
@@ -383,7 +383,7 @@ dissect_prism(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
case PRISM_TYPE1_CHANNEL:
case PRISM_TYPE2_CHANNEL:
channel = tvb_get_guint32(tvb, offset, byte_order);
- phdr.presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr.has_channel = TRUE;
phdr.channel = channel;
if(tree){
proto_tree_add_item(prism_did_tree, hf_ieee80211_prism_did_channel, tvb, offset, 4, byte_order);
@@ -428,7 +428,7 @@ dissect_prism(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U
case PRISM_TYPE1_RATE:
case PRISM_TYPE2_RATE:
rate = tvb_get_guint32(tvb, offset, byte_order);
- phdr.presence_flags |= PHDR_802_11_HAS_DATA_RATE;
+ phdr.has_data_rate = TRUE;
phdr.data_rate = rate;
if(tree){
proto_tree_add_item(prism_did_tree, hf_ieee80211_prism_did_rate, tvb, offset, 4, byte_order);
diff --git a/epan/dissectors/packet-ieee80211-radio.c b/epan/dissectors/packet-ieee80211-radio.c
index c45f0f8346..b71e505c58 100644
--- a/epan/dissectors/packet-ieee80211-radio.c
+++ b/epan/dissectors/packet-ieee80211-radio.c
@@ -668,14 +668,14 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
col_clear(pinfo->cinfo, COL_INFO);
/* Calculate the data rate, if we have the necessary data */
- if (phdr->presence_flags & PHDR_802_11_HAS_DATA_RATE) {
+ if (phdr->has_data_rate) {
data_rate = phdr->data_rate * 0.5f;
have_data_rate = TRUE;
}
- if (phdr->presence_flags & PHDR_802_11_HAS_SIGNAL_DBM) {
+ if (phdr->has_signal_dbm) {
col_add_fstr(pinfo->cinfo, COL_RSSI, "%u dBm", phdr->signal_dbm);
- } else if (phdr->presence_flags & PHDR_802_11_HAS_SIGNAL_PERCENT) {
+ } else if (phdr->has_signal_percent) {
col_add_fstr(pinfo->cinfo, COL_RSSI, "%u%%", phdr->signal_percent);
}
@@ -690,44 +690,44 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
switch (phdr->phy) {
case PHDR_802_11_PHY_11_FHSS:
- if (phdr->phy_info.info_11_fhss.presence_flags & PHDR_802_11_FHSS_HAS_HOP_SET) {
+ if (phdr->phy_info.info_11_fhss.has_hop_set) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11_fhss_hop_set, tvb, 0, 0,
phdr->phy_info.info_11_fhss.hop_set);
}
- if (phdr->phy_info.info_11_fhss.presence_flags & PHDR_802_11_FHSS_HAS_HOP_PATTERN) {
+ if (phdr->phy_info.info_11_fhss.has_hop_pattern) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11_fhss_hop_pattern, tvb, 0, 0,
phdr->phy_info.info_11_fhss.hop_pattern);
}
- if (phdr->phy_info.info_11_fhss.presence_flags & PHDR_802_11_FHSS_HAS_HOP_INDEX) {
+ if (phdr->phy_info.info_11_fhss.has_hop_index) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11_fhss_hop_index, tvb, 0, 0,
phdr->phy_info.info_11_fhss.hop_index);
}
break;
case PHDR_802_11_PHY_11B:
- if (phdr->phy_info.info_11b.presence_flags & PHDR_802_11B_HAS_SHORT_PREAMBLE) {
+ if (phdr->phy_info.info_11b.has_short_preamble) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_short_preamble, tvb, 0, 0,
phdr->phy_info.info_11b.short_preamble);
}
break;
case PHDR_802_11_PHY_11A:
- if (phdr->phy_info.info_11a.presence_flags & PHDR_802_11A_HAS_CHANNEL_TYPE) {
+ if (phdr->phy_info.info_11a.has_channel_type) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11a_channel_type, tvb, 0, 0,
phdr->phy_info.info_11a.channel_type);
}
- if (phdr->phy_info.info_11a.presence_flags & PHDR_802_11A_HAS_TURBO_TYPE) {
+ if (phdr->phy_info.info_11a.has_turbo_type) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11a_turbo_type, tvb, 0, 0,
phdr->phy_info.info_11a.turbo_type);
}
break;
case PHDR_802_11_PHY_11G:
- if (phdr->phy_info.info_11g.presence_flags & PHDR_802_11G_HAS_SHORT_PREAMBLE) {
+ if (phdr->phy_info.info_11g.has_short_preamble) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_short_preamble, tvb, 0, 0,
phdr->phy_info.info_11g.short_preamble);
}
- if (phdr->phy_info.info_11g.presence_flags & PHDR_802_11G_HAS_MODE) {
+ if (phdr->phy_info.info_11g.has_mode) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11g_mode, tvb, 0, 0,
phdr->phy_info.info_11g.mode);
}
@@ -737,37 +737,37 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
{
guint bandwidth_40;
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_MCS_INDEX) {
+ if (phdr->phy_info.info_11n.has_mcs_index) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11n_mcs_index, tvb, 0, 0,
phdr->phy_info.info_11n.mcs_index);
}
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_BANDWIDTH) {
+ if (phdr->phy_info.info_11n.has_bandwidth) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11n_bandwidth, tvb, 0, 0,
phdr->phy_info.info_11n.bandwidth);
}
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_SHORT_GI) {
+ if (phdr->phy_info.info_11n.has_short_gi) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11n_short_gi, tvb, 0, 0,
phdr->phy_info.info_11n.short_gi);
}
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_GREENFIELD) {
+ if (phdr->phy_info.info_11n.has_greenfield) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11n_greenfield, tvb, 0, 0,
phdr->phy_info.info_11n.greenfield);
}
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_FEC) {
+ if (phdr->phy_info.info_11n.has_fec) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11n_fec, tvb, 0, 0,
phdr->phy_info.info_11n.fec);
}
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_STBC_STREAMS) {
+ if (phdr->phy_info.info_11n.has_stbc_streams) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11n_stbc_streams, tvb, 0, 0,
phdr->phy_info.info_11n.stbc_streams);
}
- if (phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_HAS_NESS) {
+ if (phdr->phy_info.info_11n.has_ness) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11n_ness, tvb, 0, 0,
phdr->phy_info.info_11n.ness);
}
@@ -776,12 +776,9 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
* If we have all the fields needed to look up the data rate,
* do so.
*/
-#define PHDR_802_11N_ALL_FIELDS_FOR_DATARATE \
- (PHDR_802_11N_HAS_MCS_INDEX | \
- PHDR_802_11N_HAS_BANDWIDTH | \
- PHDR_802_11N_HAS_SHORT_GI)
-
- if ((phdr->phy_info.info_11n.presence_flags & PHDR_802_11N_ALL_FIELDS_FOR_DATARATE) == PHDR_802_11N_ALL_FIELDS_FOR_DATARATE) {
+ if (phdr->phy_info.info_11n.has_mcs_index &&
+ phdr->phy_info.info_11n.has_bandwidth &&
+ phdr->phy_info.info_11n.has_short_gi) {
bandwidth_40 =
(phdr->phy_info.info_11n.bandwidth == PHDR_802_11_BANDWIDTH_40_MHZ) ?
1 : 0;
@@ -799,17 +796,17 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
guint bandwidth = 0;
guint i;
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_STBC) {
+ if (phdr->phy_info.info_11ac.has_stbc) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11ac_stbc, tvb, 0, 0,
phdr->phy_info.info_11ac.stbc);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_TXOP_PS_NOT_ALLOWED) {
+ if (phdr->phy_info.info_11ac.has_txop_ps_not_allowed) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11ac_txop_ps_not_allowed, tvb, 0, 0,
phdr->phy_info.info_11ac.txop_ps_not_allowed);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_SHORT_GI) {
+ if (phdr->phy_info.info_11ac.has_short_gi) {
can_calculate_rate = TRUE; /* well, if we also have the bandwidth */
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11ac_short_gi, tvb, 0, 0,
phdr->phy_info.info_11ac.short_gi);
@@ -817,22 +814,22 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
can_calculate_rate = FALSE; /* unknown GI length */
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_SHORT_GI_NSYM_DISAMBIG) {
+ if (phdr->phy_info.info_11ac.has_short_gi_nsym_disambig) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11ac_short_gi_nsym_disambig, tvb, 0, 0,
phdr->phy_info.info_11ac.short_gi_nsym_disambig);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_LDPC_EXTRA_OFDM_SYMBOL) {
+ if (phdr->phy_info.info_11ac.has_ldpc_extra_ofdm_symbol) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11ac_ldpc_extra_ofdm_symbol, tvb, 0, 0,
phdr->phy_info.info_11ac.ldpc_extra_ofdm_symbol);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_BEAMFORMED) {
+ if (phdr->phy_info.info_11ac.has_beamformed) {
proto_tree_add_boolean(radio_tree, hf_wlan_radio_11ac_beamformed, tvb, 0, 0,
phdr->phy_info.info_11ac.beamformed);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_BANDWIDTH) {
+ if (phdr->phy_info.info_11ac.has_bandwidth) {
if (phdr->phy_info.info_11ac.bandwidth < G_N_ELEMENTS(ieee80211_vht_bw2rate_index))
bandwidth = ieee80211_vht_bw2rate_index[phdr->phy_info.info_11ac.bandwidth];
else
@@ -869,7 +866,7 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
* If we don't know whether space-time block coding is being
* used, we don't know the number of space-time streams.
*/
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_STBC) {
+ if (phdr->phy_info.info_11ac.has_stbc) {
guint nsts;
if (phdr->phy_info.info_11ac.stbc)
@@ -879,7 +876,7 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
proto_tree_add_uint(user_tree, hf_wlan_radio_11ac_nsts, tvb, 0, 0,
nsts);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_FEC) {
+ if (phdr->phy_info.info_11ac.has_fec) {
proto_tree_add_uint(user_tree, hf_wlan_radio_11ac_fec, tvb, 0, 0,
(phdr->phy_info.info_11ac.fec >> i) & 0x01);
}
@@ -899,12 +896,12 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
}
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_GROUP_ID) {
+ if (phdr->phy_info.info_11ac.has_group_id) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11ac_gid, tvb, 0, 0,
phdr->phy_info.info_11ac.group_id);
}
- if (phdr->phy_info.info_11ac.presence_flags & PHDR_802_11AC_HAS_PARTIAL_AID) {
+ if (phdr->phy_info.info_11ac.has_partial_aid) {
proto_tree_add_uint(radio_tree, hf_wlan_radio_11ac_p_aid, tvb, 0, 0,
phdr->phy_info.info_11ac.partial_aid);
}
@@ -921,13 +918,13 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
data_rate);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_CHANNEL) {
+ if (phdr->has_channel) {
col_add_fstr(pinfo->cinfo, COL_FREQ_CHAN, "%u", phdr->channel);
proto_tree_add_uint(radio_tree, hf_wlan_radio_channel, tvb, 0, 0,
phdr->channel);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_FREQUENCY) {
+ if (phdr->has_frequency) {
col_add_fstr(pinfo->cinfo, COL_FREQ_CHAN, "%u MHz", phdr->frequency);
proto_tree_add_uint_format_value(radio_tree, hf_wlan_radio_frequency, tvb, 0, 0,
phdr->frequency,
@@ -935,7 +932,7 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
phdr->frequency);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_SIGNAL_PERCENT) {
+ if (phdr->has_signal_percent) {
col_add_fstr(pinfo->cinfo, COL_RSSI, "%u%%", phdr->signal_percent);
proto_tree_add_uint_format_value(radio_tree, hf_wlan_radio_signal_percent, tvb, 0, 0,
phdr->signal_percent,
@@ -943,7 +940,7 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
phdr->signal_percent);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_SIGNAL_DBM) {
+ if (phdr->has_signal_dbm) {
col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", phdr->signal_dbm);
proto_tree_add_int_format_value(radio_tree, hf_wlan_radio_signal_dbm, tvb, 0, 0,
phdr->signal_dbm,
@@ -951,21 +948,21 @@ dissect_wlan_radio (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void
phdr->signal_dbm);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_NOISE_PERCENT) {
+ if (phdr->has_noise_percent) {
proto_tree_add_uint_format_value(radio_tree, hf_wlan_radio_noise_percent, tvb, 0, 0,
phdr->noise_percent,
"%u%%",
phdr->noise_percent);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_NOISE_DBM) {
+ if (phdr->has_noise_dbm) {
proto_tree_add_int_format_value(radio_tree, hf_wlan_radio_noise_dbm, tvb, 0, 0,
phdr->noise_dbm,
"%d dBm",
phdr->noise_dbm);
}
- if (phdr->presence_flags & PHDR_802_11_HAS_TSF_TIMESTAMP) {
+ if (phdr->has_tsf_timestamp) {
proto_tree_add_uint64(radio_tree, hf_wlan_radio_timestamp, tvb, 0, 0,
phdr->tsf_timestamp);
}
diff --git a/epan/dissectors/packet-ieee80211-radiotap.c b/epan/dissectors/packet-ieee80211-radiotap.c
index 2246ba7b78..82b242eb53 100644
--- a/epan/dissectors/packet-ieee80211-radiotap.c
+++ b/epan/dissectors/packet-ieee80211-radiotap.c
@@ -589,11 +589,11 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
radiotap_info = &rtp_info_arr;
/* We don't have any 802.11 metadata yet. */
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = -1;
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "WLAN");
col_clear(pinfo->cinfo, COL_INFO);
@@ -810,7 +810,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
case IEEE80211_RADIOTAP_TSFT:
radiotap_info->tsft = tvb_get_letoh64(tvb, offset);
phdr.tsf_timestamp = radiotap_info->tsft;
- phdr.presence_flags |= PHDR_802_11_HAS_TSF_TIMESTAMP;
+ phdr.has_tsf_timestamp = TRUE;
if (tree) {
proto_tree_add_uint64(radiotap_tree,
hf_radiotap_mactime, tvb,
@@ -916,7 +916,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
(float)rate / 2);
}
radiotap_info->rate = rate;
- phdr.presence_flags |= PHDR_802_11_HAS_DATA_RATE;
+ phdr.has_data_rate = TRUE;
phdr.data_rate = rate;
}
break;
@@ -931,20 +931,20 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
*/
gint calc_channel;
- phdr.presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr.has_frequency = TRUE;
phdr.frequency = freq;
calc_channel = ieee80211_mhz_to_chan(freq);
if (calc_channel != -1) {
- phdr.presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr.has_channel = TRUE;
phdr.channel = calc_channel;
}
}
+ memset(&phdr.phy_info, 0, sizeof(phdr.phy_info));
cflags = tvb_get_letohs(tvb, offset + 2);
switch (cflags & IEEE80211_CHAN_ALLTURBO) {
case IEEE80211_CHAN_FHSS:
phdr.phy = PHDR_802_11_PHY_11_FHSS;
- phdr.phy_info.info_11_fhss.presence_flags = 0;
break;
case IEEE80211_CHAN_DSSS:
@@ -953,52 +953,51 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
case IEEE80211_CHAN_A:
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr.phy_info.info_11a.has_turbo_type = TRUE;
phdr.phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_NORMAL;
break;
case IEEE80211_CHAN_B:
phdr.phy = PHDR_802_11_PHY_11B;
- phdr.phy_info.info_11b.presence_flags = 0;
if (have_rflags) {
- phdr.phy_info.info_11b.presence_flags |= PHDR_802_11B_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11b.has_short_preamble = TRUE;
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;
- phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr.phy_info.info_11g.has_mode = TRUE;
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.has_short_preamble = TRUE;
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;
- phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr.phy_info.info_11g.has_mode = TRUE;
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.has_short_preamble = TRUE;
phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
}
break;
case IEEE80211_CHAN_108A:
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr.phy_info.info_11a.has_turbo_type = TRUE;
/* We assume non-STURBO is dynamic turbo */
phdr.phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_DYNAMIC_TURBO;
break;
case IEEE80211_CHAN_108PUREG:
phdr.phy = PHDR_802_11_PHY_11G;
- phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr.phy_info.info_11g.has_mode = TRUE;
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.has_short_preamble = TRUE;
phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
}
break;
@@ -1046,10 +1045,9 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
* FHSS.
*/
phdr.phy = PHDR_802_11_PHY_11_FHSS;
- phdr.phy_info.info_11_fhss.presence_flags =
- PHDR_802_11_FHSS_HAS_HOP_SET |
- PHDR_802_11_FHSS_HAS_HOP_PATTERN;
+ phdr.phy_info.info_11_fhss.has_hop_set = TRUE;
phdr.phy_info.info_11_fhss.hop_set = tvb_get_guint8(tvb, offset);
+ phdr.phy_info.info_11_fhss.has_hop_pattern = TRUE;
phdr.phy_info.info_11_fhss.hop_pattern = tvb_get_guint8(tvb, offset + 1);
proto_tree_add_item(radiotap_tree,
hf_radiotap_fhss_hopset, tvb,
@@ -1061,7 +1059,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
case IEEE80211_RADIOTAP_DBM_ANTSIGNAL:
dbm = (gint8)tvb_get_guint8(tvb, offset);
- phdr.presence_flags |= PHDR_802_11_HAS_SIGNAL_DBM;
+ phdr.has_signal_dbm = TRUE;
phdr.signal_dbm = dbm;
col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", dbm);
proto_tree_add_int_format_value(radiotap_tree,
@@ -1074,7 +1072,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
case IEEE80211_RADIOTAP_DBM_ANTNOISE:
dbm = (gint8) tvb_get_guint8(tvb, offset);
- phdr.presence_flags |= PHDR_802_11_HAS_NOISE_DBM;
+ phdr.has_noise_dbm = TRUE;
phdr.noise_dbm = dbm;
if (tree) {
proto_tree_add_int_format_value(radiotap_tree,
@@ -1181,7 +1179,6 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
*/
if (phdr.phy != PHDR_802_11_PHY_11_FHSS) {
phdr.phy = PHDR_802_11_PHY_11_FHSS;
- phdr.phy_info.info_11_fhss.presence_flags = 0;
}
break;
@@ -1191,59 +1188,58 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
case IEEE80211_CHAN_A:
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr.phy_info.info_11a.has_turbo_type = TRUE;
phdr.phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_NORMAL;
break;
case IEEE80211_CHAN_B:
phdr.phy = PHDR_802_11_PHY_11B;
- phdr.phy_info.info_11b.presence_flags = 0;
if (have_rflags) {
- phdr.phy_info.info_11b.presence_flags |= PHDR_802_11B_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11b.has_short_preamble = TRUE;
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;
- phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr.phy_info.info_11g.has_mode = TRUE;
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.has_short_preamble = TRUE;
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;
- phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr.phy_info.info_11g.has_mode = TRUE;
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.has_short_preamble = TRUE;
phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
}
break;
case IEEE80211_CHAN_108A:
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr.phy_info.info_11a.has_turbo_type = TRUE;
/* We assume non-STURBO is dynamic turbo */
phdr.phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_DYNAMIC_TURBO;
break;
case IEEE80211_CHAN_108PUREG:
phdr.phy = PHDR_802_11_PHY_11G;
- phdr.phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr.phy_info.info_11g.has_mode = TRUE;
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.has_short_preamble = TRUE;
phdr.phy_info.info_11g.short_preamble = (rflags & IEEE80211_RADIOTAP_F_SHORTPRE) != 0;
}
break;
case IEEE80211_CHAN_ST:
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr.phy_info.info_11a.has_turbo_type = TRUE;
phdr.phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_STATIC_TURBO;
break;
@@ -1254,7 +1250,6 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
case IEEE80211_CHAN_G|IEEE80211_CHAN_HT40U:
case IEEE80211_CHAN_G|IEEE80211_CHAN_HT40D:
phdr.phy = PHDR_802_11_PHY_11N;
- phdr.phy_info.info_11n.presence_flags = 0;
/*
* This doesn't supply "short GI" information,
@@ -1264,7 +1259,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
* the radiotap.org page for that field.
*/
if (have_rflags) {
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_SHORT_GI;
+ phdr.phy_info.info_11n.has_short_gi = TRUE;
if (rflags & 0x80)
phdr.phy_info.info_11n.short_gi = 1;
else
@@ -1278,10 +1273,10 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
* XXX - some captures have 0, which is
* obviously bogus.
*/
- phdr.presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr.has_frequency = TRUE;
phdr.frequency = freq;
}
- phdr.presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr.has_channel = TRUE;
phdr.channel = tvb_get_guint8(tvb, offset + 6);
if (tree) {
static const int * xchannel_flags[] = {
@@ -1344,45 +1339,45 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
*/
if (mcs_known != 0) {
phdr.phy = PHDR_802_11_PHY_11N;
- phdr.phy_info.info_11n.presence_flags = 0;
+ memset(&phdr.phy_info.info_11n, 0, sizeof(phdr.phy_info.info_11n));
}
mcs_flags = tvb_get_guint8(tvb, offset + 1);
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_MCS) {
mcs = tvb_get_guint8(tvb, offset + 2);
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_MCS_INDEX;
+ phdr.phy_info.info_11n.has_mcs_index = TRUE;
phdr.phy_info.info_11n.mcs_index = mcs;
} else {
mcs = 0;
can_calculate_rate = FALSE; /* no MCS index */
}
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_BW) {
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_BANDWIDTH;
+ phdr.phy_info.info_11n.has_bandwidth = TRUE;
phdr.phy_info.info_11n.bandwidth = (mcs_flags & IEEE80211_RADIOTAP_MCS_BW_MASK);
}
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_GI) {
gi_length = (mcs_flags & IEEE80211_RADIOTAP_MCS_SGI) ?
1 : 0;
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_SHORT_GI;
+ phdr.phy_info.info_11n.has_short_gi = TRUE;
phdr.phy_info.info_11n.short_gi = (gi_length == 0);
} else {
gi_length = 0;
can_calculate_rate = FALSE; /* no GI width */
}
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_FMT) {
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_GREENFIELD;
+ phdr.phy_info.info_11n.has_greenfield = TRUE;
phdr.phy_info.info_11n.greenfield = (mcs_flags & IEEE80211_RADIOTAP_MCS_FMT_GF) != 0;
}
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_FEC) {
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_FEC;
+ phdr.phy_info.info_11n.has_fec = TRUE;
phdr.phy_info.info_11n.fec = (mcs_flags & IEEE80211_RADIOTAP_MCS_FEC_LDPC) ? 1 : 0;
}
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_STBC) {
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_STBC_STREAMS;
+ phdr.phy_info.info_11n.has_stbc_streams = TRUE;
phdr.phy_info.info_11n.stbc_streams = (mcs_flags & IEEE80211_RADIOTAP_MCS_STBC_MASK) >> IEEE80211_RADIOTAP_MCS_STBC_SHIFT;
}
if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_NESS) {
- phdr.phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_NESS;
+ phdr.phy_info.info_11n.has_ness = TRUE;
/* This is stored a bit weirdly */
phdr.phy_info.info_11n.ness =
((mcs_known & IEEE80211_RADIOTAP_MCS_NESS_BIT1) >> 6) |
@@ -1542,7 +1537,6 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
*/
if (known != 0) {
phdr.phy = PHDR_802_11_PHY_11AC;
- phdr.phy_info.info_11ac.presence_flags = 0;
}
vht_flags = tvb_get_guint8(tvb, offset + 2);
if (tree) {
@@ -1574,7 +1568,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
}
if (known & IEEE80211_RADIOTAP_VHT_HAVE_STBC) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_STBC;
+ phdr.phy_info.info_11ac.has_stbc = TRUE;
phdr.phy_info.info_11ac.stbc = (vht_flags & IEEE80211_RADIOTAP_VHT_STBC) != 0;
if (vht_tree)
proto_tree_add_item(vht_tree, hf_radiotap_vht_stbc,
@@ -1582,7 +1576,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
}
if (known & IEEE80211_RADIOTAP_VHT_HAVE_TXOP_PS) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_TXOP_PS_NOT_ALLOWED;
+ phdr.phy_info.info_11ac.has_txop_ps_not_allowed = TRUE;
phdr.phy_info.info_11ac.txop_ps_not_allowed = (vht_flags & IEEE80211_RADIOTAP_VHT_TXOP_PS) != 0;
if (vht_tree)
proto_tree_add_item(vht_tree, hf_radiotap_vht_txop_ps,
@@ -1591,7 +1585,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
if (known & IEEE80211_RADIOTAP_VHT_HAVE_GI) {
gi_length = (vht_flags & IEEE80211_RADIOTAP_VHT_SGI) ? 1 : 0;
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_SHORT_GI;
+ phdr.phy_info.info_11ac.has_short_gi = TRUE;
phdr.phy_info.info_11ac.short_gi = gi_length;
if (vht_tree) {
proto_tree_add_item(vht_tree, hf_radiotap_vht_gi,
@@ -1602,7 +1596,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
}
if (known & IEEE80211_RADIOTAP_VHT_HAVE_SGI_NSYM_DA) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_SHORT_GI_NSYM_DISAMBIG;
+ phdr.phy_info.info_11ac.has_short_gi_nsym_disambig = TRUE;
phdr.phy_info.info_11ac.short_gi_nsym_disambig = (vht_flags & IEEE80211_RADIOTAP_VHT_SGI_NSYM_DA) != 0;
if (vht_tree) {
it = proto_tree_add_item(vht_tree, hf_radiotap_vht_sgi_nsym_da,
@@ -1615,7 +1609,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
}
if (known & IEEE80211_RADIOTAP_VHT_HAVE_LDPC_EXTRA) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_LDPC_EXTRA_OFDM_SYMBOL;
+ phdr.phy_info.info_11ac.has_ldpc_extra_ofdm_symbol = TRUE;
phdr.phy_info.info_11ac.ldpc_extra_ofdm_symbol = (vht_flags & IEEE80211_RADIOTAP_VHT_LDPC_EXTRA) != 0;
if (vht_tree) {
proto_tree_add_item(vht_tree, hf_radiotap_vht_ldpc_extra,
@@ -1624,7 +1618,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
}
if (known & IEEE80211_RADIOTAP_VHT_HAVE_BF) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_BEAMFORMED;
+ phdr.phy_info.info_11ac.has_beamformed = TRUE;
phdr.phy_info.info_11ac.beamformed = (vht_flags & IEEE80211_RADIOTAP_VHT_BF) != 0;
if (vht_tree)
proto_tree_add_item(vht_tree, hf_radiotap_vht_bf,
@@ -1633,7 +1627,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
if (known & IEEE80211_RADIOTAP_VHT_HAVE_BW) {
bw = tvb_get_guint8(tvb, offset + 3) & IEEE80211_RADIOTAP_VHT_BW_MASK;
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_BANDWIDTH;
+ phdr.phy_info.info_11ac.has_bandwidth = TRUE;
phdr.phy_info.info_11ac.bandwidth = bw;
if (bw < sizeof(ieee80211_vht_bw2rate_index)/sizeof(ieee80211_vht_bw2rate_index[0]))
bandwidth = ieee80211_vht_bw2rate_index[bw];
@@ -1662,9 +1656,8 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
*/
if (phdr.phy != PHDR_802_11_PHY_11AC) {
phdr.phy = PHDR_802_11_PHY_11AC;
- phdr.phy_info.info_11ac.presence_flags = 0;
}
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_FEC;
+ phdr.phy_info.info_11ac.has_fec = TRUE;
if (vht_tree) {
it = proto_tree_add_item(vht_tree, hf_radiotap_vht_user,
tvb, offset + 4, 5, ENC_NA);
@@ -1715,7 +1708,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
phdr.phy_info.info_11ac.fec = tvb_get_guint8(tvb, offset + 8);
if (known & IEEE80211_RADIOTAP_VHT_HAVE_GID) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_GROUP_ID;
+ phdr.phy_info.info_11ac.has_group_id = TRUE;
phdr.phy_info.info_11ac.group_id = tvb_get_guint8(tvb, offset + 9);
if (vht_tree)
proto_tree_add_item(vht_tree, hf_radiotap_vht_gid,
@@ -1723,7 +1716,7 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* u
}
if (known & IEEE80211_RADIOTAP_VHT_HAVE_PAID) {
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_PARTIAL_AID;
+ phdr.phy_info.info_11ac.has_partial_aid = TRUE;
phdr.phy_info.info_11ac.partial_aid = tvb_get_letohs(tvb, offset + 10);
if (vht_tree) {
proto_tree_add_item(vht_tree, hf_radiotap_vht_p_aid,
diff --git a/epan/dissectors/packet-ieee80211-wlancap.c b/epan/dissectors/packet-ieee80211-wlancap.c
index 5b19b813ef..13a2f6fac4 100644
--- a/epan/dissectors/packet-ieee80211-wlancap.c
+++ b/epan/dissectors/packet-ieee80211-wlancap.c
@@ -364,11 +364,11 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
struct ieee_802_11_phdr phdr;
/* We don't have any 802.11 metadata yet. */
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = -1;
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "WLAN");
col_clear(pinfo->cinfo, COL_INFO);
@@ -395,7 +395,7 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
if (tree)
proto_tree_add_item(wlan_tree, hf_wlancap_length, tvb, offset, 4, ENC_BIG_ENDIAN);
offset+=4;
- phdr.presence_flags |= PHDR_802_11_HAS_TSF_TIMESTAMP;
+ phdr.has_tsf_timestamp = TRUE;
phdr.tsf_timestamp = tvb_get_ntoh64(tvb, offset);
if (tree)
proto_tree_add_item(wlan_tree, hf_wlancap_mactime, tvb, offset, 8, ENC_BIG_ENDIAN);
@@ -407,7 +407,6 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
case 1:
phdr.phy = PHDR_802_11_PHY_11_FHSS;
- phdr.phy_info.info_11_fhss.presence_flags = 0;
break;
case 2:
@@ -420,34 +419,28 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
case 4:
phdr.phy = PHDR_802_11_PHY_11B;
- phdr.phy_info.info_11b.presence_flags = 0;
break;
case 5:
/* 11b PBCC? */
phdr.phy = PHDR_802_11_PHY_11B;
- phdr.phy_info.info_11b.presence_flags = 0;
break;
case 6:
phdr.phy = PHDR_802_11_PHY_11G; /* pure? */
- phdr.phy_info.info_11g.presence_flags = 0;
break;
case 7:
/* 11a PBCC? */
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = 0;
break;
case 8:
phdr.phy = PHDR_802_11_PHY_11A;
- phdr.phy_info.info_11a.presence_flags = 0;
break;
case 9:
phdr.phy = PHDR_802_11_PHY_11G; /* mixed? */
- phdr.phy_info.info_11g.presence_flags = 0;
break;
}
if (tree)
@@ -455,16 +448,15 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
offset+=4;
if (phdr.phy == PHDR_802_11_PHY_11_FHSS) {
- phdr.phy_info.info_11_fhss.presence_flags =
- PHDR_802_11_FHSS_HAS_HOP_SET |
- PHDR_802_11_FHSS_HAS_HOP_PATTERN |
- PHDR_802_11_FHSS_HAS_HOP_INDEX;
+ phdr.phy_info.info_11_fhss.has_hop_set = TRUE;
phdr.phy_info.info_11_fhss.hop_set = tvb_get_guint8(tvb, offset);
if (tree)
proto_tree_add_item(wlan_tree, hf_wlancap_hop_set, tvb, offset, 1, ENC_NA);
+ phdr.phy_info.info_11_fhss.has_hop_pattern = TRUE;
phdr.phy_info.info_11_fhss.hop_pattern = tvb_get_guint8(tvb, offset + 1);
if (tree)
proto_tree_add_item(wlan_tree, hf_wlancap_hop_pattern, tvb, offset + 1, 1, ENC_NA);
+ phdr.phy_info.info_11_fhss.has_hop_index = TRUE;
phdr.phy_info.info_11_fhss.hop_index = tvb_get_guint8(tvb, offset + 2);
if (tree)
proto_tree_add_item(wlan_tree, hf_wlancap_hop_index, tvb, offset + 2, 1, ENC_NA);
@@ -472,25 +464,25 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
channel = tvb_get_ntohl(tvb, offset);
if (channel < 256) {
col_add_fstr(pinfo->cinfo, COL_FREQ_CHAN, "%u", channel);
- phdr.presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr.has_channel = TRUE;
phdr.channel = channel;
if (tree)
proto_tree_add_uint(wlan_tree, hf_wlancap_channel, tvb, offset, 4, channel);
frequency = ieee80211_chan_to_mhz(channel, (phdr.phy != PHDR_802_11_PHY_11A));
if (frequency != 0) {
- phdr.presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr.has_frequency = TRUE;
phdr.frequency = frequency;
}
} else if (channel < 10000) {
col_add_fstr(pinfo->cinfo, COL_FREQ_CHAN, "%u MHz", channel);
- phdr.presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr.has_frequency = TRUE;
phdr.frequency = channel;
if (tree)
proto_tree_add_uint_format(wlan_tree, hf_wlancap_channel_frequency, tvb, offset,
4, channel, "Frequency: %u MHz", channel);
calc_channel = ieee80211_mhz_to_chan(channel);
if (calc_channel != -1) {
- phdr.presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr.has_channel = TRUE;
phdr.channel = calc_channel;
}
} else {
@@ -515,7 +507,7 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
/* Can this be expressed in .5 MHz units? */
if ((datarate % 500000) == 0) {
/* Yes. */
- phdr.presence_flags |= PHDR_802_11_HAS_DATA_RATE;
+ phdr.has_data_rate = TRUE;
phdr.data_rate = datarate / 500000;
}
}
@@ -554,7 +546,7 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
case SSI_DBM:
/* dBm */
dbm = tvb_get_ntohl(tvb, offset);
- phdr.presence_flags |= PHDR_802_11_HAS_SIGNAL_DBM;
+ phdr.has_signal_dbm = TRUE;
phdr.signal_dbm = dbm;
col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", dbm);
if (tree)
@@ -589,7 +581,7 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
/* dBm */
if (antnoise != 0) {
/* The spec says use 0xffffffff, but some drivers appear to use 0. */
- phdr.presence_flags |= PHDR_802_11_HAS_NOISE_DBM;
+ phdr.has_noise_dbm = TRUE;
phdr.noise_dbm = antnoise;
}
if (tree)
@@ -617,12 +609,12 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
switch (phdr.phy) {
case PHDR_802_11_PHY_11B:
- phdr.phy_info.info_11b.presence_flags |= PHDR_802_11B_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11b.has_short_preamble = TRUE;
phdr.phy_info.info_11b.short_preamble = TRUE;
break;
case PHDR_802_11_PHY_11G:
- phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.has_short_preamble = TRUE;
phdr.phy_info.info_11g.short_preamble = TRUE;
break;
}
@@ -637,12 +629,12 @@ dissect_wlancap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
switch (phdr.phy) {
case PHDR_802_11_PHY_11B:
- phdr.phy_info.info_11b.presence_flags |= PHDR_802_11B_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11b.has_short_preamble = TRUE;
phdr.phy_info.info_11b.short_preamble = FALSE;
break;
case PHDR_802_11_PHY_11G:
- phdr.phy_info.info_11g.presence_flags |= PHDR_802_11G_HAS_SHORT_PREAMBLE;
+ phdr.phy_info.info_11g.has_short_preamble = TRUE;
phdr.phy_info.info_11g.short_preamble = FALSE;
break;
}
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 962c61158f..1b498bbbc4 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -16515,7 +16515,7 @@ dissect_ieee80211_common (tvbuff_t *tvb, packet_info *pinfo,
guint16 meshoff = 0;
static wlan_hdr_t whdrs[4];
gboolean retransmitted;
- gboolean isDMG = (phdr->presence_flags & PHDR_802_11_HAS_FREQUENCY ?
+ gboolean isDMG = (phdr->has_frequency ?
IS_80211AD(phdr->frequency) :
FALSE);
@@ -18357,11 +18357,11 @@ dissect_ieee80211 (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
* Fake a pseudo-header.
* XXX - what are we supposed to do if the FCS length is unknown?
*/
+ memset(&ourphdr, 0, sizeof(ourphdr));
ourphdr.fcs_len = -1;
ourphdr.decrypted = FALSE;
ourphdr.datapad = FALSE;
ourphdr.phy = PHDR_802_11_PHY_UNKNOWN;
- ourphdr.presence_flags = 0;
phdr = &ourphdr;
}
return dissect_ieee80211_common (tvb, pinfo, tree, FALSE, FALSE, phdr);
@@ -18377,11 +18377,11 @@ dissect_ieee80211_withfcs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
struct ieee_802_11_phdr phdr;
/* Construct a pseudo-header to hand to the common code. */
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = 4;
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
dissect_ieee80211_common (tvb, pinfo, tree, FALSE, FALSE, &phdr);
return tvb_captured_length(tvb);
}
@@ -18396,11 +18396,10 @@ dissect_ieee80211_withoutfcs (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
struct ieee_802_11_phdr phdr;
/* Construct a pseudo-header to hand to the common code. */
- phdr.fcs_len = 0;
+ memset(&phdr, 0, sizeof(phdr));
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
dissect_ieee80211_common (tvb, pinfo, tree, FALSE, FALSE, &phdr);
return tvb_captured_length(tvb);
}
@@ -18442,11 +18441,10 @@ dissect_ieee80211_centrino(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
struct ieee_802_11_phdr phdr;
/* Construct a pseudo-header to hand to the common code. */
- phdr.fcs_len = 0;
+ memset(&phdr, 0, sizeof(phdr));
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
dissect_ieee80211_common (tvb, pinfo, tree, FALSE, TRUE, &phdr);
return tvb_captured_length(tvb);
}
@@ -18462,11 +18460,10 @@ dissect_ieee80211_bsfc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
struct ieee_802_11_phdr phdr;
/* Construct a pseudo-header to hand to the common code. */
- phdr.fcs_len = 0;
+ memset(&phdr, 0, sizeof(phdr));
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
dissect_ieee80211_common (tvb, pinfo, tree, TRUE, FALSE, &phdr);
return tvb_captured_length(tvb);
}
diff --git a/epan/dissectors/packet-ixveriwave.c b/epan/dissectors/packet-ixveriwave.c
index ed151f96da..e8fb6ffebe 100644
--- a/epan/dissectors/packet-ixveriwave.c
+++ b/epan/dissectors/packet-ixveriwave.c
@@ -678,11 +678,11 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
struct ieee_802_11_phdr phdr;
/* We don't have any 802.11 metadata yet. */
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = -1;
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
/* First add the IFG information, need to grab the info bit field here */
vw_info = tvb_get_letohs(tvb, 20);
@@ -752,8 +752,7 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
if ((vw_rflags & FLAGS_CHAN_HT) || (vw_rflags & FLAGS_CHAN_VHT)) {
if (vw_rflags & FLAGS_CHAN_VHT) {
phdr.phy = PHDR_802_11_PHY_11AC;
- phdr.phy_info.info_11ac.presence_flags =
- PHDR_802_11AC_HAS_SHORT_GI;
+ phdr.phy_info.info_11ac.has_short_gi = TRUE;
phdr.phy_info.info_11ac.short_gi = ((vw_rflags & FLAGS_CHAN_SHORTGI) != 0);
/*
* XXX - this probably has only one user, so only one MCS index
@@ -769,12 +768,13 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
* The code in wiretap/vwr.c doesn't seem to provide it.
*/
phdr.phy = PHDR_802_11_PHY_11N;
- phdr.phy_info.info_11n.presence_flags =
- PHDR_802_11N_HAS_MCS_INDEX |
- PHDR_802_11N_HAS_SHORT_GI |
- PHDR_802_11N_HAS_GREENFIELD;
+ phdr.phy_info.info_11n.has_mcs_index = TRUE;
phdr.phy_info.info_11n.mcs_index = mcs_index;
+
+ phdr.phy_info.info_11n.has_short_gi = TRUE;
phdr.phy_info.info_11n.short_gi = ((vw_rflags & FLAGS_CHAN_SHORTGI) != 0);
+
+ phdr.phy_info.info_11n.has_greenfield = TRUE;
phdr.phy_info.info_11n.greenfield = (plcp_type == PLCP_TYPE_GREENFIELD);
}
if (tap_tree) {
@@ -796,9 +796,8 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
*/
if (vw_chanflags & CHAN_CCK) {
phdr.phy = PHDR_802_11_PHY_11B;
- phdr.phy_info.info_11b.presence_flags = 0;
}
- phdr.presence_flags |= PHDR_802_11_HAS_DATA_RATE;
+ phdr.has_data_rate = TRUE;
phdr.data_rate = tvb_get_letohs(tvb, offset-5) / 5;
if (tap_tree) {
proto_tree_add_uint_format_value(tap_tree, hf_radiotap_datarate,
@@ -809,7 +808,7 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
col_add_fstr(pinfo->cinfo, COL_TX_RATE, "%.1f", phyRate);
dbm = (gint8) tvb_get_guint8(tvb, offset);
- phdr.presence_flags |= PHDR_802_11_HAS_SIGNAL_DBM;
+ phdr.has_signal_dbm = TRUE;
phdr.signal_dbm = dbm;
col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", dbm);
if (tap_tree) {
@@ -1030,7 +1029,7 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
vht_grp_id1 = tvb_get_guint8(tvb, offset);
vht_grp_id2 = tvb_get_guint8(tvb, offset+1);
vht_grp_id = ((vht_grp_id1 &0xF0) >> 4) + ((vht_grp_id2 &0x03) << 4);
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_GROUP_ID;
+ phdr.phy_info.info_11ac.has_group_id = TRUE;
phdr.phy_info.info_11ac.group_id = vht_grp_id;
proto_tree_add_uint_format(tap_tree, hf_radiotap_vht_grp_id,
tvb, offset, 2, vht_grp_id, "VHT Group Id: %u ",vht_grp_id);
@@ -1046,7 +1045,7 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
vht_su_partial_id1 = tvb_get_guint8(tvb,offset);
vht_su_partial_id2 = tvb_get_guint8(tvb,offset+1);
vht_su_partial_id = ((vht_su_partial_id1 &0xE0) >> 5) + ((vht_su_partial_id2 &0x3f) << 3);
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_PARTIAL_AID;
+ phdr.phy_info.info_11ac.has_partial_aid = TRUE;
phdr.phy_info.info_11ac.partial_aid = vht_su_partial_id;
proto_tree_add_uint_format(tap_tree, hf_radiotap_vht_su_partial_aid,
tvb, offset, 2, vht_su_partial_id, "VHT PARTIAL AID: %u ",vht_su_partial_id);
@@ -1176,7 +1175,7 @@ wlantap_dissect(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
offset = offset + 1;
vht_beamformed = tvb_get_guint8(tvb, offset);
vht_beamformed = (vht_beamformed & 0x01);
- phdr.phy_info.info_11ac.presence_flags |= PHDR_802_11AC_HAS_BEAMFORMED;
+ phdr.phy_info.info_11ac.has_beamformed = TRUE;
phdr.phy_info.info_11ac.beamformed = vht_beamformed;
proto_tree_add_uint_format(tap_tree, hf_radiotap_vht_beamformed,
tvb, offset, 1, vht_beamformed, "VHT Beamformed: %u ",vht_beamformed);
diff --git a/epan/dissectors/packet-peekremote.c b/epan/dissectors/packet-peekremote.c
index 32766d97d2..8b343e4b22 100644
--- a/epan/dissectors/packet-peekremote.c
+++ b/epan/dissectors/packet-peekremote.c
@@ -418,11 +418,11 @@ dissect_peekremote_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
}
/* We don't have any 802.11 metadata yet. */
+ memset(&phdr, 0, sizeof(phdr));
phdr.fcs_len = 4; /* has an FCS */
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PEEKREMOTE");
col_clear(pinfo->cinfo, COL_INFO);
@@ -446,24 +446,18 @@ dissect_peekremote_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
if (header_size > 9)
offset += (header_size - 9);
} else {
- phdr.presence_flags |=
- PHDR_802_11_HAS_CHANNEL|
- PHDR_802_11_HAS_SIGNAL_PERCENT|
- PHDR_802_11_HAS_NOISE_PERCENT|
- PHDR_802_11_HAS_SIGNAL_DBM|
- PHDR_802_11_HAS_NOISE_DBM|
- PHDR_802_11_HAS_TSF_TIMESTAMP;
proto_tree_add_item(peekremote_tree, &hfi_peekremote_type, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
mcs_index = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_mcs_index, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
+ phdr.has_channel = TRUE;
phdr.channel = tvb_get_ntohs(tvb, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_channel, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
frequency = tvb_get_ntohl(tvb, offset);
if (frequency != 0) {
- phdr.presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr.has_frequency = TRUE;
phdr.frequency = frequency;
}
proto_tree_add_item(peekremote_tree, &hfi_peekremote_frequency, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -474,7 +468,6 @@ dissect_peekremote_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
if (extflags & EXT_FLAG_802_11ac) {
guint i;
phdr.phy = PHDR_802_11_PHY_11AC;
- phdr.phy_info.info_11ac.presence_flags = 0;
/*
* XXX - this probably has only one user, so only one MCS index
* and only one NSS, but where's the NSS?
@@ -484,19 +477,23 @@ dissect_peekremote_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
}
} else {
phdr.phy = PHDR_802_11_PHY_11N;
- phdr.phy_info.info_11n.presence_flags = PHDR_802_11N_HAS_MCS_INDEX;
+ phdr.phy_info.info_11n.has_mcs_index = TRUE;
phdr.phy_info.info_11n.mcs_index = mcs_index;
}
offset += dissect_peekremote_extflags(tvb, pinfo, peekremote_tree, offset);
+ phdr.has_signal_percent = TRUE;
phdr.signal_percent = tvb_get_guint8(tvb, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_signal_percent, tvb, offset, 1, ENC_NA);
offset += 1;
+ phdr.has_noise_percent = TRUE;
phdr.noise_percent = tvb_get_guint8(tvb, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_noise_percent, tvb, offset, 1, ENC_NA);
offset += 1;
+ phdr.has_signal_dbm = TRUE;
phdr.signal_dbm = tvb_get_guint8(tvb, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_signal_dbm, tvb, offset, 1, ENC_NA);
offset += 1;
+ phdr.has_noise_dbm = TRUE;
phdr.noise_dbm = tvb_get_guint8(tvb, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_noise_dbm, tvb, offset, 1, ENC_NA);
offset += 1;
@@ -523,6 +520,7 @@ dissect_peekremote_new(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
offset += dissect_peekremote_flags(tvb, pinfo, peekremote_tree, offset);
offset += dissect_peekremote_status(tvb, pinfo, peekremote_tree, offset);
proto_tree_add_item(peekremote_tree, &hfi_peekremote_timestamp, tvb, offset, 8, ENC_BIG_ENDIAN);
+ phdr.has_tsf_timestamp = TRUE;
phdr.tsf_timestamp = tvb_get_ntoh64(tvb, offset);
offset += 8;
}
@@ -550,6 +548,8 @@ dissect_peekremote_legacy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
struct ieee_802_11_phdr phdr;
guint8 signal_percent;
+ memset(&phdr, 0, sizeof(phdr));
+
/*
* Check whether this is peekremote-ng, and dissect it as such if it
* is.
@@ -589,20 +589,19 @@ dissect_peekremote_legacy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, v
}
phdr.decrypted = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags =
- PHDR_802_11_HAS_CHANNEL|
- PHDR_802_11_HAS_DATA_RATE|
- PHDR_802_11_HAS_SIGNAL_PERCENT|
- PHDR_802_11_HAS_NOISE_PERCENT|
- PHDR_802_11_HAS_SIGNAL_DBM|
- PHDR_802_11_HAS_NOISE_DBM|
- PHDR_802_11_HAS_TSF_TIMESTAMP;
+ phdr.has_channel = TRUE;
phdr.channel = tvb_get_guint8(tvb, 17);
+ phdr.has_data_rate = TRUE;
phdr.data_rate = tvb_get_guint8(tvb, 16);
+ phdr.has_signal_percent = TRUE;
phdr.signal_percent = tvb_get_guint8(tvb, 18);
+ phdr.has_noise_percent = TRUE;
phdr.noise_percent = tvb_get_guint8(tvb, 18);
+ phdr.has_signal_dbm = TRUE;
phdr.signal_dbm = tvb_get_guint8(tvb, 0);
+ phdr.has_noise_dbm = TRUE;
phdr.noise_dbm = tvb_get_guint8(tvb, 1);
+ phdr.has_tsf_timestamp = TRUE;
phdr.tsf_timestamp = tvb_get_ntoh64(tvb, 8);
return 20 + call_dissector_with_data(wlan_radio_handle, next_tvb, pinfo, tree, &phdr);
diff --git a/epan/dissectors/packet-ppi.c b/epan/dissectors/packet-ppi.c
index f179b258f4..46a62b36cc 100644
--- a/epan/dissectors/packet-ppi.c
+++ b/epan/dissectors/packet-ppi.c
@@ -477,7 +477,7 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
tsft_raw = tvb_get_letoh64(tvb, offset);
if (tsft_raw != 0) {
- phdr->presence_flags |= PHDR_802_11_HAS_TSF_TIMESTAMP;
+ phdr->has_tsf_timestamp = TRUE;
if (common_flags & DOT11_FLAG_TSF_TIMER_MS)
phdr->tsf_timestamp = tsft_raw * 1000;
else
@@ -496,7 +496,7 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
rate_raw = tvb_get_letohs(tvb, ptvcursor_current_offset(csr));
if (rate_raw != 0) {
- phdr->presence_flags |= PHDR_802_11_HAS_DATA_RATE;
+ phdr->has_data_rate = TRUE;
phdr->data_rate = rate_raw;
}
rate_kbps = rate_raw * 500;
@@ -512,11 +512,11 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
if (common_frequency != 0) {
gint calc_channel;
- phdr->presence_flags |= PHDR_802_11_HAS_FREQUENCY;
+ phdr->has_frequency = TRUE;
phdr->frequency = common_frequency;
calc_channel = ieee80211_mhz_to_chan(common_frequency);
if (calc_channel != -1) {
- phdr->presence_flags |= PHDR_802_11_HAS_CHANNEL;
+ phdr->has_channel = TRUE;
phdr->channel = calc_channel;
}
}
@@ -527,14 +527,12 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
g_free(chan_str);
ptvcursor_advance(csr, 2);
+ memset(&phdr->phy_info, 0, sizeof(phdr->phy_info));
chan_flags = tvb_get_letohs(ptvcursor_tvbuff(csr), ptvcursor_current_offset(csr));
switch (chan_flags & IEEE80211_CHAN_ALLTURBO) {
case IEEE80211_CHAN_FHSS:
phdr->phy = PHDR_802_11_PHY_11_FHSS;
- phdr->phy_info.info_11_fhss.presence_flags =
- PHDR_802_11_FHSS_HAS_HOP_SET |
- PHDR_802_11_FHSS_HAS_HOP_PATTERN;
break;
case IEEE80211_CHAN_DSSS:
@@ -543,37 +541,36 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
case IEEE80211_CHAN_A:
phdr->phy = PHDR_802_11_PHY_11A;
- phdr->phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr->phy_info.info_11a.has_turbo_type = TRUE;
phdr->phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_NORMAL;
break;
case IEEE80211_CHAN_B:
phdr->phy = PHDR_802_11_PHY_11B;
- phdr->phy_info.info_11b.presence_flags = 0;
break;
case IEEE80211_CHAN_PUREG:
phdr->phy = PHDR_802_11_PHY_11G;
- phdr->phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr->phy_info.info_11g.has_mode = TRUE;
phdr->phy_info.info_11g.mode = PHDR_802_11G_MODE_NORMAL;
break;
case IEEE80211_CHAN_G:
phdr->phy = PHDR_802_11_PHY_11G;
- phdr->phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr->phy_info.info_11g.has_mode = TRUE;
phdr->phy_info.info_11g.mode = PHDR_802_11G_MODE_NORMAL;
break;
case IEEE80211_CHAN_108A:
phdr->phy = PHDR_802_11_PHY_11A;
- phdr->phy_info.info_11a.presence_flags = PHDR_802_11A_HAS_TURBO_TYPE;
+ phdr->phy_info.info_11a.has_turbo_type = TRUE;
/* We assume non-STURBO is dynamic turbo */
phdr->phy_info.info_11a.turbo_type = PHDR_802_11A_TURBO_TYPE_DYNAMIC_TURBO;
break;
case IEEE80211_CHAN_108PUREG:
phdr->phy = PHDR_802_11_PHY_11G;
- phdr->phy_info.info_11g.presence_flags = PHDR_802_11G_HAS_MODE;
+ phdr->phy_info.info_11g.has_mode = TRUE;
phdr->phy_info.info_11g.mode = PHDR_802_11G_MODE_SUPER_G;
break;
}
@@ -590,11 +587,15 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
ptvcursor_pop_subtree(csr);
- if (phdr->phy == PHDR_802_11_PHY_11_FHSS)
+ if (phdr->phy == PHDR_802_11_PHY_11_FHSS) {
+ phdr->phy_info.info_11_fhss.has_hop_set = TRUE;
phdr->phy_info.info_11_fhss.hop_set = tvb_get_guint8(ptvcursor_tvbuff(csr), ptvcursor_current_offset(csr));
+ }
ptvcursor_add(csr, hf_80211_common_fhss_hopset, 1, ENC_LITTLE_ENDIAN);
- if (phdr->phy == PHDR_802_11_PHY_11_FHSS)
+ if (phdr->phy == PHDR_802_11_PHY_11_FHSS) {
+ phdr->phy_info.info_11_fhss.has_hop_pattern = TRUE;
phdr->phy_info.info_11_fhss.hop_pattern = tvb_get_guint8(ptvcursor_tvbuff(csr), ptvcursor_current_offset(csr));
+ }
ptvcursor_add(csr, hf_80211_common_fhss_pattern, 1, ENC_LITTLE_ENDIAN);
dbm_value = (gint8) tvb_get_guint8(tvb, ptvcursor_current_offset(csr));
@@ -606,7 +607,7 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
* used for "don't have it", so we check for it as well.
*/
col_add_fstr(pinfo->cinfo, COL_RSSI, "%d dBm", dbm_value);
- phdr->presence_flags |= PHDR_802_11_HAS_SIGNAL_DBM;
+ phdr->has_signal_dbm = TRUE;
phdr->signal_dbm = dbm_value;
}
ptvcursor_add_invalid_check(csr, hf_80211_common_dbm_antsignal, 1, 0x80); /* -128 */
@@ -619,7 +620,7 @@ dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int of
* have 0, presumably meaning it's incorrectly being used for
* "don't have it", so we check for it as well.
*/
- phdr->presence_flags |= PHDR_802_11_HAS_NOISE_DBM;
+ phdr->has_noise_dbm = TRUE;
phdr->noise_dbm = dbm_value;
}
ptvcursor_add_invalid_check(csr, hf_80211_common_dbm_antnoise, 1, 0x80);
@@ -654,7 +655,8 @@ dissect_80211n_mac(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
csr = ptvcursor_new(ftree, tvb, offset);
flags = tvb_get_letohl(tvb, ptvcursor_current_offset(csr));
- phdr->phy_info.info_11n.presence_flags = PHDR_802_11N_HAS_SHORT_GI|PHDR_802_11N_HAS_GREENFIELD;
+ phdr->phy_info.info_11n.has_short_gi = TRUE;
+ phdr->phy_info.info_11n.has_greenfield = TRUE;
phdr->phy_info.info_11n.short_gi = ((flags & DOT11N_FLAG_SHORT_GI) != 0);
phdr->phy_info.info_11n.greenfield = ((flags & DOT11N_FLAG_GREENFIELD) != 0);
ptvcursor_add_with_subtree(csr, hf_80211n_mac_flags, 4, ENC_LITTLE_ENDIAN,
@@ -706,13 +708,13 @@ dissect_80211n_mac_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
mcs = tvb_get_guint8(tvb, ptvcursor_current_offset(csr));
if (mcs != 255) {
- phdr->phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_MCS_INDEX;
+ phdr->phy_info.info_11n.has_mcs_index = TRUE;
phdr->phy_info.info_11n.mcs_index = mcs;
}
ptvcursor_add_invalid_check(csr, hf_80211n_mac_phy_mcs, 1, 255);
ness = tvb_get_guint8(tvb, ptvcursor_current_offset(csr));
- phdr->phy_info.info_11n.presence_flags |= PHDR_802_11N_HAS_NESS;
+ phdr->phy_info.info_11n.has_ness = TRUE;
phdr->phy_info.info_11n.ness = ness;
ti = ptvcursor_add(csr, hf_80211n_mac_phy_num_streams, 1, ENC_LITTLE_ENDIAN);
if (tvb_get_guint8(tvb, ptvcursor_current_offset(csr) - 1) == 0)
@@ -886,7 +888,6 @@ dissect_ppi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
phdr.decrypted = FALSE;
phdr.datapad = FALSE;
phdr.phy = PHDR_802_11_PHY_UNKNOWN;
- phdr.presence_flags = 0;
while (tot_len > 0) {
data_type = tvb_get_letohs(tvb, offset);