monitor: Add allow_hmp parameter to monitor_init()

Add a new parameter allow_hmp to monitor_init() so that the storage
daemon can disable HMP.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20200224143008.13362-20-kwolf@redhat.com>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Kevin Wolf 2020-02-24 15:30:07 +01:00
parent 8e9119a807
commit a2f411c467
3 changed files with 13 additions and 4 deletions

View file

@ -19,7 +19,7 @@ void monitor_init_globals(void);
void monitor_init_globals_core(void);
void monitor_init_qmp(Chardev *chr, bool pretty, Error **errp);
void monitor_init_hmp(Chardev *chr, bool use_readline, Error **errp);
int monitor_init(MonitorOptions *opts, Error **errp);
int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp);
int monitor_init_opts(QemuOpts *opts, Error **errp);
void monitor_cleanup(void);

View file

@ -611,7 +611,7 @@ void monitor_init_globals_core(void)
NULL);
}
int monitor_init(MonitorOptions *opts, Error **errp)
int monitor_init(MonitorOptions *opts, bool allow_hmp, Error **errp)
{
Chardev *chr;
Error *local_err = NULL;
@ -622,11 +622,19 @@ int monitor_init(MonitorOptions *opts, Error **errp)
return -1;
}
if (!opts->has_mode) {
opts->mode = allow_hmp ? MONITOR_MODE_READLINE : MONITOR_MODE_CONTROL;
}
switch (opts->mode) {
case MONITOR_MODE_CONTROL:
monitor_init_qmp(chr, opts->pretty, &local_err);
break;
case MONITOR_MODE_READLINE:
if (!allow_hmp) {
error_setg(errp, "Only QMP is supported");
return -1;
}
if (opts->pretty) {
warn_report("'pretty' is deprecated for HMP monitors, it has no "
"effect and will be removed in future versions");
@ -658,7 +666,7 @@ int monitor_init_opts(QemuOpts *opts, Error **errp)
goto out;
}
monitor_init(options, &local_err);
monitor_init(options, true, &local_err);
qapi_free_MonitorOptions(options);
out:

View file

@ -237,7 +237,8 @@
#
# @id: Name of the monitor
#
# @mode: Selects the monitor mode (default: readline)
# @mode: Selects the monitor mode (default: readline in the system
# emulator, control in qemu-storage-daemon)
#
# @pretty: Enables pretty printing (QMP only)
#