Browse Source

Add helper function for generating random MAC addresses with same OUI

random_mac_addr_keep_oui() is similar to random_mac_addr(), but it
maintains the OUI part of the source address.

Signed-off-by: Jouni Malinen <j@w1.fi>
Jouni Malinen 10 years ago
parent
commit
1cbdb9d137
2 changed files with 11 additions and 0 deletions
  1. 10 0
      src/utils/common.c
  2. 1 0
      src/utils/common.h

+ 10 - 0
src/utils/common.c

@@ -856,3 +856,13 @@ int random_mac_addr(u8 *addr)
 	addr[0] |= 0x02; /* locally administered */
 	return 0;
 }
+
+
+int random_mac_addr_keep_oui(u8 *addr)
+{
+	if (os_get_random(addr + 3, 3) < 0)
+		return -1;
+	addr[0] &= 0xfe; /* unicast */
+	addr[0] |= 0x02; /* locally administered */
+	return 0;
+}

+ 1 - 0
src/utils/common.h

@@ -539,6 +539,7 @@ void str_clear_free(char *str);
 void bin_clear_free(void *bin, size_t len);
 
 int random_mac_addr(u8 *addr);
+int random_mac_addr_keep_oui(u8 *addr);
 
 
 /*