diff options
Diffstat (limited to 'qemu/roms/u-boot/tools/gen_eth_addr.c')
-rw-r--r-- | qemu/roms/u-boot/tools/gen_eth_addr.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/qemu/roms/u-boot/tools/gen_eth_addr.c b/qemu/roms/u-boot/tools/gen_eth_addr.c new file mode 100644 index 000000000..bf9d935ef --- /dev/null +++ b/qemu/roms/u-boot/tools/gen_eth_addr.c @@ -0,0 +1,34 @@ +/* + * (C) Copyright 2001 + * Murray Jensen <Murray.Jensen@cmst.csiro.au> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <time.h> + +int +main(int argc, char *argv[]) +{ + unsigned long ethaddr_low, ethaddr_high; + + srand(time(0) | getpid()); + + /* + * setting the 2nd LSB in the most significant byte of + * the address makes it a locally administered ethernet + * address + */ + ethaddr_high = (rand() & 0xfeff) | 0x0200; + ethaddr_low = rand(); + + printf("%02lx:%02lx:%02lx:%02lx:%02lx:%02lx\n", + ethaddr_high >> 8, ethaddr_high & 0xff, + ethaddr_low >> 24, (ethaddr_low >> 16) & 0xff, + (ethaddr_low >> 8) & 0xff, ethaddr_low & 0xff); + + return (0); +} |