Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fade5d54 authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds
Browse files

[PATCH] uml: don't roll my own random MAC generator



Use the existing random_ether_addr() instead of cooking up my own
version.  Pointed out by Dave Hollis and Jason Lunz.

Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3b89af76
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -310,9 +310,7 @@ static void setup_etheraddr(char *str, unsigned char *addr)
	return;

random:
	addr[0] = 0xfe;
	addr[1] = 0xfd;
	random_mac(addr);
	random_ether_addr(addr)
}

static DEFINE_SPINLOCK(devices_lock);
+0 −29
Original line number Diff line number Diff line
@@ -259,32 +259,3 @@ char *split_if_spec(char *str, ...)
	va_end(ap);
	return str;
}

void random_mac(unsigned char *addr)
{
	struct timeval tv;
	long n;
	unsigned int seed;

	gettimeofday(&tv, NULL);

	/* Assume that 20 bits of microseconds and 12 bits of the pid are
	 * reasonably unpredictable.
	 */
	seed = tv.tv_usec | (os_getpid() << 20);
	srandom(seed);

	/* Don't care about endianness here - switching endianness
	 * just rearranges what are hopefully random numbers.
	 *
	 * Assume that RAND_MAX > 65536, so random is called twice and
	 * we use 16 bits of the result.
	 */
	n = random();
	addr[2] = (n >> 8) & 255;
	addr[3] = n % 255;

	n = random();
	addr[4] = (n >> 8) & 255;
	addr[5] = n % 255;
}
+0 −2
Original line number Diff line number Diff line
@@ -50,6 +50,4 @@ extern char *split_if_spec(char *str, ...);

extern int dev_netmask(void *d, void *m);

extern void random_mac(unsigned char *addr);

#endif