diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2009-12-04 15:24:09 -0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-12-07 14:04:20 -0600 |
commit | 14d505b1f2605498a8a20fcb0b4596395f62e43e (patch) | |
tree | 8fa0a51eabc12097bdd551cae3aa9da3f0edde6c /monitor.c | |
parent | d647f672186f35e3400824ce19a243f391d3f228 (diff) | |
download | qemu-14d505b1f2605498a8a20fcb0b4596395f62e43e.tar.gz qemu-14d505b1f2605498a8a20fcb0b4596395f62e43e.tar.bz2 qemu-14d505b1f2605498a8a20fcb0b4596395f62e43e.zip |
monitor: Introduce 'block_passwd' command
When using encrypted disk images, QEMU will prompt the user
for passwords when started.
This makes sense for the user protocol, but doesn't for QMP.
The solution is to have Monitor command which allows the user
or a Client to set passwords in advance, so that we avoid
the prompt completely.
This is what block_passwd does, for example:
(QEMU) block_passwd ide0-hd0 foobar
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -772,6 +772,22 @@ static void do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data) eject_device(mon, bs, force); } +static void do_block_set_passwd(Monitor *mon, const QDict *qdict, + QObject **ret_data) +{ + BlockDriverState *bs; + + bs = bdrv_find(qdict_get_str(qdict, "device")); + if (!bs) { + qemu_error_new(QERR_DEVICE_NOT_FOUND, qdict_get_str(qdict, "device")); + return; + } + + if (bdrv_set_key(bs, qdict_get_str(qdict, "password")) < 0) { + qemu_error_new(QERR_INVALID_PASSWORD); + } +} + static void do_change_block(Monitor *mon, const char *device, const char *filename, const char *fmt) { |