aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ieee80211-wlancap.c
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/packet-ieee80211-wlancap.c
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/packet-ieee80211-wlancap.c')
-rw-r--r--epan/dissectors/packet-ieee80211-wlancap.c40
1 files changed, 16 insertions, 24 deletions
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;
}