2 files changed, 29 insertions(+), 1 deletion(-) smbios.c | 12 +++++++++++- vl.c | 18 ++++++++++++++++++
# HG changeset patch # User Ryan Harper <[EMAIL PROTECTED]> # Date 1197058922 21600 # Node ID 5fe703a5a7bde701686fc333c17836b308c17b4f # Parent 3470dd05f46cc9f14c3fc9561d06031a4bc0ce7a Add -uuid command line flag This patch allows users to specify a uuid. If no uuid is specified, then one is generated. Signed-off-by: Ryan Harper <[EMAIL PROTECTED]> diff -r 3470dd05f46c -r 5fe703a5a7bd smbios.c --- a/smbios.c Fri Dec 07 14:22:02 2007 -0600 +++ b/smbios.c Fri Dec 07 14:22:02 2007 -0600 @@ -32,6 +32,7 @@ #ifdef CONFIG_UUID #include <uuid/uuid.h> +extern const char *qemu_uuid; #endif CPUState *first_cpu; @@ -497,7 +498,16 @@ load_smbios_tables(uint8_t *entry, uint8 #ifdef CONFIG_UUID uuid_t uuid; - uuid_generate(uuid); + /* parse user-specified uuid if present */ + if (qemu_uuid != NULL) { + if (uuid_parse(qemu_uuid, uuid) < 0) { + fprintf(stderr, "SMBIOS: Could not parse user UUID" + "string, check format.\n"); + return -1; + } + } else { + uuid_generate(uuid); + } #else uint8_t uuid[16] = "QEMUQEMUQEMUQEMU"; #endif diff -r 3470dd05f46c -r 5fe703a5a7bd vl.c --- a/vl.c Fri Dec 07 14:22:02 2007 -0600 +++ b/vl.c Fri Dec 07 14:22:02 2007 -0600 @@ -137,6 +137,9 @@ int inet_aton(const char *cp, struct in_ #define SMBD_COMMAND "/usr/sfw/sbin/smbd" #else #define SMBD_COMMAND "/usr/sbin/smbd" +#endif +#ifdef CONFIG_UUID +const char *qemu_uuid; #endif //#define DEBUG_UNUSED_IOPORT @@ -7545,6 +7548,10 @@ static void help(int exitcode) "-no-reboot exit instead of rebooting\n" "-loadvm file start right away with a saved state (loadvm in monitor)\n" "-vnc display start a VNC server on display\n" +#ifdef CONFIG_UUID + "-uuid %%08x-%%04x-%%04x-%%04x-%%012x\n" + " specify machine UUID\n" +#endif #ifndef _WIN32 "-daemonize daemonize QEMU after initializing\n" #endif @@ -7647,6 +7654,9 @@ enum { QEMU_OPTION_vnc, QEMU_OPTION_no_acpi, QEMU_OPTION_no_reboot, +#ifdef CONFIG_UUID + QEMU_OPTION_uuid, +#endif QEMU_OPTION_show_cursor, QEMU_OPTION_daemonize, QEMU_OPTION_option_rom, @@ -7742,6 +7752,9 @@ const QEMUOption qemu_options[] = { { "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice }, { "smp", HAS_ARG, QEMU_OPTION_smp }, { "vnc", HAS_ARG, QEMU_OPTION_vnc }, +#ifdef CONFIG_UUID + { "uuid", HAS_ARG, QEMU_OPTION_uuid }, +#endif /* temporary options */ { "usb", 0, QEMU_OPTION_usb }, @@ -8527,6 +8540,11 @@ int main(int argc, char **argv) case QEMU_OPTION_daemonize: daemonize = 1; break; +#ifdef CONFIG_UUID + case QEMU_OPTION_uuid: + qemu_uuid = optarg; + break; +#endif case QEMU_OPTION_option_rom: if (nb_option_roms >= MAX_OPTION_ROMS) { fprintf(stderr, "Too many option ROMs\n");