|
@@ -168,33 +168,27 @@ void qmp_system_wakeup(Error **errp)
|
|
qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, errp);
|
|
qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, errp);
|
|
}
|
|
}
|
|
|
|
|
|
-void qmp_set_password(const char *protocol, const char *password,
|
|
|
|
- bool has_connected, const char *connected, Error **errp)
|
|
|
|
|
|
+void qmp_set_password(DisplayProtocol protocol, const char *password,
|
|
|
|
+ bool has_connected, SetPasswordAction connected,
|
|
|
|
+ Error **errp)
|
|
{
|
|
{
|
|
int disconnect_if_connected = 0;
|
|
int disconnect_if_connected = 0;
|
|
int fail_if_connected = 0;
|
|
int fail_if_connected = 0;
|
|
int rc;
|
|
int rc;
|
|
|
|
|
|
if (has_connected) {
|
|
if (has_connected) {
|
|
- if (strcmp(connected, "fail") == 0) {
|
|
|
|
- fail_if_connected = 1;
|
|
|
|
- } else if (strcmp(connected, "disconnect") == 0) {
|
|
|
|
- disconnect_if_connected = 1;
|
|
|
|
- } else if (strcmp(connected, "keep") == 0) {
|
|
|
|
- /* nothing */
|
|
|
|
- } else {
|
|
|
|
- error_setg(errp, QERR_INVALID_PARAMETER, "connected");
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
|
|
+ fail_if_connected = connected == SET_PASSWORD_ACTION_FAIL;
|
|
|
|
+ disconnect_if_connected = connected == SET_PASSWORD_ACTION_DISCONNECT;
|
|
}
|
|
}
|
|
|
|
|
|
- if (strcmp(protocol, "spice") == 0) {
|
|
|
|
|
|
+ if (protocol == DISPLAY_PROTOCOL_SPICE) {
|
|
if (!qemu_using_spice(errp)) {
|
|
if (!qemu_using_spice(errp)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
rc = qemu_spice.set_passwd(password, fail_if_connected,
|
|
rc = qemu_spice.set_passwd(password, fail_if_connected,
|
|
disconnect_if_connected);
|
|
disconnect_if_connected);
|
|
- } else if (strcmp(protocol, "vnc") == 0) {
|
|
|
|
|
|
+ } else {
|
|
|
|
+ assert(protocol == DISPLAY_PROTOCOL_VNC);
|
|
if (fail_if_connected || disconnect_if_connected) {
|
|
if (fail_if_connected || disconnect_if_connected) {
|
|
/* vnc supports "connected=keep" only */
|
|
/* vnc supports "connected=keep" only */
|
|
error_setg(errp, QERR_INVALID_PARAMETER, "connected");
|
|
error_setg(errp, QERR_INVALID_PARAMETER, "connected");
|
|
@@ -203,10 +197,6 @@ void qmp_set_password(const char *protocol, const char *password,
|
|
/* Note that setting an empty password will not disable login through
|
|
/* Note that setting an empty password will not disable login through
|
|
* this interface. */
|
|
* this interface. */
|
|
rc = vnc_display_password(NULL, password);
|
|
rc = vnc_display_password(NULL, password);
|
|
- } else {
|
|
|
|
- error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "protocol",
|
|
|
|
- "'vnc' or 'spice'");
|
|
|
|
- return;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if (rc != 0) {
|
|
if (rc != 0) {
|
|
@@ -214,7 +204,7 @@ void qmp_set_password(const char *protocol, const char *password,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void qmp_expire_password(const char *protocol, const char *whenstr,
|
|
|
|
|
|
+void qmp_expire_password(DisplayProtocol protocol, const char *whenstr,
|
|
Error **errp)
|
|
Error **errp)
|
|
{
|
|
{
|
|
time_t when;
|
|
time_t when;
|
|
@@ -230,17 +220,14 @@ void qmp_expire_password(const char *protocol, const char *whenstr,
|
|
when = strtoull(whenstr, NULL, 10);
|
|
when = strtoull(whenstr, NULL, 10);
|
|
}
|
|
}
|
|
|
|
|
|
- if (strcmp(protocol, "spice") == 0) {
|
|
|
|
|
|
+ if (protocol == DISPLAY_PROTOCOL_SPICE) {
|
|
if (!qemu_using_spice(errp)) {
|
|
if (!qemu_using_spice(errp)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
rc = qemu_spice.set_pw_expire(when);
|
|
rc = qemu_spice.set_pw_expire(when);
|
|
- } else if (strcmp(protocol, "vnc") == 0) {
|
|
|
|
- rc = vnc_display_pw_expire(NULL, when);
|
|
|
|
} else {
|
|
} else {
|
|
- error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "protocol",
|
|
|
|
- "'vnc' or 'spice'");
|
|
|
|
- return;
|
|
|
|
|
|
+ assert(protocol == DISPLAY_PROTOCOL_VNC);
|
|
|
|
+ rc = vnc_display_pw_expire(NULL, when);
|
|
}
|
|
}
|
|
|
|
|
|
if (rc != 0) {
|
|
if (rc != 0) {
|