Commit 8fcb1b90cdd14a53c442455c74d7593edeb07d7a
1 parent
3cce6243
Add -uuid command line option (Gleb Natapov)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5257 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
31 additions
and
0 deletions
sysemu.h
... | ... | @@ -8,6 +8,8 @@ extern const char *bios_dir; |
8 | 8 | |
9 | 9 | extern int vm_running; |
10 | 10 | extern const char *qemu_name; |
11 | +extern uint8_t qemu_uuid[]; | |
12 | +#define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" | |
11 | 13 | |
12 | 14 | typedef struct vm_change_state_entry VMChangeStateEntry; |
13 | 15 | typedef void VMChangeStateHandler(void *opaque, int running); | ... | ... |
vl.c
... | ... | @@ -254,6 +254,8 @@ static int64_t qemu_icount_bias; |
254 | 254 | QEMUTimer *icount_rt_timer; |
255 | 255 | QEMUTimer *icount_vm_timer; |
256 | 256 | |
257 | +uint8_t qemu_uuid[16]; | |
258 | + | |
257 | 259 | #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR) |
258 | 260 | |
259 | 261 | /***********************************************************/ |
... | ... | @@ -7700,6 +7702,7 @@ static void help(int exitcode) |
7700 | 7702 | "-g WxH[xDEPTH] Set the initial graphical resolution and depth\n" |
7701 | 7703 | #endif |
7702 | 7704 | "-name string set the name of the guest\n" |
7705 | + "-uuid %%08x-%%04x-%%04x-%%04x-%%012x specify machine UUID\n" | |
7703 | 7706 | "\n" |
7704 | 7707 | "Network options:\n" |
7705 | 7708 | "-net nic[,vlan=n][,macaddr=addr][,model=type]\n" |
... | ... | @@ -7894,6 +7897,7 @@ enum { |
7894 | 7897 | QEMU_OPTION_startdate, |
7895 | 7898 | QEMU_OPTION_tb_size, |
7896 | 7899 | QEMU_OPTION_icount, |
7900 | + QEMU_OPTION_uuid, | |
7897 | 7901 | }; |
7898 | 7902 | |
7899 | 7903 | typedef struct QEMUOption { |
... | ... | @@ -7982,6 +7986,7 @@ const QEMUOption qemu_options[] = { |
7982 | 7986 | #ifdef CONFIG_CURSES |
7983 | 7987 | { "curses", 0, QEMU_OPTION_curses }, |
7984 | 7988 | #endif |
7989 | + { "uuid", HAS_ARG, QEMU_OPTION_uuid }, | |
7985 | 7990 | |
7986 | 7991 | /* temporary options */ |
7987 | 7992 | { "usb", 0, QEMU_OPTION_usb }, |
... | ... | @@ -8192,6 +8197,23 @@ static BOOL WINAPI qemu_ctrl_handler(DWORD type) |
8192 | 8197 | } |
8193 | 8198 | #endif |
8194 | 8199 | |
8200 | +static int qemu_uuid_parse(const char *str, uint8_t *uuid) | |
8201 | +{ | |
8202 | + int ret; | |
8203 | + | |
8204 | + if(strlen(str) != 36) | |
8205 | + return -1; | |
8206 | + | |
8207 | + ret = sscanf(str, UUID_FMT, &uuid[0], &uuid[1], &uuid[2], &uuid[3], | |
8208 | + &uuid[4], &uuid[5], &uuid[6], &uuid[7], &uuid[8], &uuid[9], | |
8209 | + &uuid[10], &uuid[11], &uuid[12], &uuid[13], &uuid[14], &uuid[15]); | |
8210 | + | |
8211 | + if(ret != 16) | |
8212 | + return -1; | |
8213 | + | |
8214 | + return 0; | |
8215 | +} | |
8216 | + | |
8195 | 8217 | #define MAX_NET_CLIENTS 32 |
8196 | 8218 | |
8197 | 8219 | #ifndef _WIN32 |
... | ... | @@ -8770,6 +8792,13 @@ int main(int argc, char **argv) |
8770 | 8792 | case QEMU_OPTION_show_cursor: |
8771 | 8793 | cursor_hide = 0; |
8772 | 8794 | break; |
8795 | + case QEMU_OPTION_uuid: | |
8796 | + if(qemu_uuid_parse(optarg, qemu_uuid) < 0) { | |
8797 | + fprintf(stderr, "Fail to parse UUID string." | |
8798 | + " Wrong format.\n"); | |
8799 | + exit(1); | |
8800 | + } | |
8801 | + break; | |
8773 | 8802 | case QEMU_OPTION_daemonize: |
8774 | 8803 | daemonize = 1; |
8775 | 8804 | break; | ... | ... |