diff options
Diffstat (limited to 'wifi/1.3/default/wifi_iface_util.cpp')
-rw-r--r-- | wifi/1.3/default/wifi_iface_util.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/wifi/1.3/default/wifi_iface_util.cpp b/wifi/1.3/default/wifi_iface_util.cpp index 5d61271410..df5ab2a6fa 100644 --- a/wifi/1.3/default/wifi_iface_util.cpp +++ b/wifi/1.3/default/wifi_iface_util.cpp @@ -39,7 +39,10 @@ namespace V1_3 { namespace implementation { namespace iface_util { -WifiIfaceUtil::WifiIfaceUtil() : random_mac_address_(nullptr) {} +WifiIfaceUtil::WifiIfaceUtil() : random_mac_address_index_(0) { + for (int i=0; i < MAX_RANDOM_MAC_ADDR_INDEX; i++) + random_mac_address_[i] = nullptr; +} std::array<uint8_t, 6> WifiIfaceUtil::getFactoryMacAddress( const std::string& iface_name) { @@ -64,13 +67,22 @@ bool WifiIfaceUtil::setMacAddress(const std::string& iface_name, return true; } +void WifiIfaceUtil::setRandomMacAddressIndex(int idx) { + if (idx >= MAX_RANDOM_MAC_ADDR_INDEX) { + LOG(ERROR) << "Requested random mac address index crossed max limit!!"; + return; + } + + random_mac_address_index_ = idx; +} + std::array<uint8_t, 6> WifiIfaceUtil::getOrCreateRandomMacAddress() { - if (random_mac_address_) { - return *random_mac_address_.get(); + if (random_mac_address_[random_mac_address_index_]) { + return *random_mac_address_[random_mac_address_index_].get(); } - random_mac_address_ = + random_mac_address_[random_mac_address_index_] = std::make_unique<std::array<uint8_t, 6>>(createRandomMacAddress()); - return *random_mac_address_.get(); + return *random_mac_address_[random_mac_address_index_].get(); } std::array<uint8_t, 6> WifiIfaceUtil::createRandomMacAddress() { |