
# HG changeset patch # User Kaitlin Rupert <karupert@us.ibm.com> # Date 1237266354 25200 # Node ID 69b7af00d9da92ce169d915bb6b17c493fe0b021 # Parent 160e1a86d82e8ed930e3006098f2af8b230c9834 Improve random MAC generator Use microseconds since the epoch instead of seconds. When defining a guest with multiple net devices specified (in which none of them have a MAC supplied), it's possible for _net_rand_mac() to be called in rapid succession. Also, initialize s - the seed value passed to rand_r(). Signed-off-by: Kaitlin Rupert <karupert@us.ibm.com> diff -r 160e1a86d82e -r 69b7af00d9da src/Virt_VirtualSystemManagementService.c --- a/src/Virt_VirtualSystemManagementService.c Mon Mar 16 13:55:02 2009 -0700 +++ b/src/Virt_VirtualSystemManagementService.c Mon Mar 16 22:05:54 2009 -0700 @@ -25,6 +25,7 @@ #include <stdbool.h> #include <inttypes.h> #include <time.h> +#include <sys/time.h> #include <libvirt/libvirt.h> #include "cmpidt.h" @@ -383,8 +384,14 @@ const char *_mac = NULL; CMPIString *str = NULL; CMPIStatus status; + struct timeval curr_time; - srand(time(NULL)); + ret = gettimeofday(&curr_time, NULL); + if (ret != 0) + goto out; + + srand(curr_time.tv_usec); + s = curr_time.tv_usec; r = rand_r(&s); ret = asprintf(&mac,