summaryrefslogtreecommitdiff
path: root/wifi/1.3/default/wifi_iface_util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'wifi/1.3/default/wifi_iface_util.cpp')
-rw-r--r--wifi/1.3/default/wifi_iface_util.cpp22
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() {