From 71b10ab271f5b9e1ec89ad84ae8a5313516c19ad Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Tue, 15 Jan 2019 19:14:55 -0800 Subject: [PATCH] scan: Enable the usage of MAC randomization flag --- src/scan.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/scan.c b/src/scan.c index f3f7b572..95078ad9 100644 --- a/src/scan.c +++ b/src/scan.c @@ -306,6 +306,19 @@ static void scan_freq_count(uint32_t freq, void *user_data) *count += 1; } +static bool scan_mac_address_randomization_is_disabled(void) +{ + const struct l_settings *config = iwd_get_config(); + bool disabled; + + if (!l_settings_get_bool(config, "Scan", + "disable_mac_address_randomization", + &disabled)) + return false; + + return disabled; +} + static struct l_genl_msg *scan_build_cmd(struct scan_context *sc, bool ignore_flush_flag, const struct scan_parameters *params) @@ -335,20 +348,14 @@ static struct l_genl_msg *scan_build_cmd(struct scan_context *sc, if (params->flush && !ignore_flush_flag) flags |= NL80211_SCAN_FLAG_FLUSH; - /* - * TODO: Discovery of the hidden networks with randomization flag set - * works with real hardware, but fails when used in simulated - * environment with mac80211_hwsim. This needs to be investigated. - * - * if (params->randomize_mac_addr_hint && - * wiphy_has_feature(sc->wiphy, - * NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR)) - * - * Randomizing 46 bits (locally administered 1 and multicast 0 - * is assumed). - * - * flags |= NL80211_SCAN_FLAG_RANDOM_ADDR; - */ + if (params->randomize_mac_addr_hint && + wiphy_can_randomize_mac_addr(sc->wiphy) && + !scan_mac_address_randomization_is_disabled()) + /* + * Randomizing 46 bits (locally administered 1 and multicast 0 + * is assumed). + */ + flags |= NL80211_SCAN_FLAG_RANDOM_ADDR; if (flags) l_genl_msg_append_attr(msg, NL80211_ATTR_SCAN_FLAGS, 4, &flags);