summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Network.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/Network.cpp')
-rw-r--r--Source/Core/Common/Network.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp
index 23c570045f..c03ed0fc76 100644
--- a/Source/Core/Common/Network.cpp
+++ b/Source/Core/Common/Network.cpp
@@ -3,12 +3,13 @@
// Refer to the license.txt file included.
#include <cctype>
-#include <cstdlib>
#include <cstring>
#include <ctime>
+#include <random>
#include "Common/Network.h"
#include "Common/StringUtil.h"
+#include "Common/Timer.h"
void GenerateMacAddress(const MACConsumer type, u8* mac)
{
@@ -27,16 +28,12 @@ void GenerateMacAddress(const MACConsumer type, u8* mac)
break;
}
- srand((unsigned int)time(nullptr));
-
- u8 id[3] =
- {
- (u8)rand(),
- (u8)rand(),
- (u8)rand()
- };
-
- memcpy(&mac[3], id, 3);
+ // Generate the 24-bit NIC-specific portion of the MAC address.
+ std::default_random_engine generator(Common::Timer::GetTimeMs());
+ std::uniform_int_distribution<int> distribution(0x00, 0xFF);
+ mac[3] = static_cast<u8>(distribution(generator));
+ mac[4] = static_cast<u8>(distribution(generator));
+ mac[5] = static_cast<u8>(distribution(generator));
}
std::string MacAddressToString(const u8* mac)