From nobody Tue Nov 4 13:06:50 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504271399725671.4475616766197; Fri, 1 Sep 2017 06:09:59 -0700 (PDT) Received: from localhost ([::1]:39954 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dnlhu-0003pG-L5 for importer@patchew.org; Fri, 01 Sep 2017 09:09:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54112) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dnlUs-0000T7-M1 for qemu-devel@nongnu.org; Fri, 01 Sep 2017 08:56:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dnlUk-0007Of-QY for qemu-devel@nongnu.org; Fri, 01 Sep 2017 08:56:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35678) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dnlUk-0007My-FH for qemu-devel@nongnu.org; Fri, 01 Sep 2017 08:56:22 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4A20191FFD for ; Fri, 1 Sep 2017 12:56:21 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-75.ams2.redhat.com [10.36.116.75]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CBBA0C4527; Fri, 1 Sep 2017 12:56:20 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id ADEEB1132F46; Fri, 1 Sep 2017 14:56:12 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4A20191FFD Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=armbru@redhat.com From: Markus Armbruster To: qemu-devel@nongnu.org Date: Fri, 1 Sep 2017 14:56:01 +0200 Message-Id: <20170901125611.29295-38-armbru@redhat.com> In-Reply-To: <20170901125611.29295-1-armbru@redhat.com> References: <20170901125611.29295-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 01 Sep 2017 12:56:21 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 37/47] hmp: Use qapi_enum_parse() in hmp_migrate_set_parameter() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau The error message on invalid parameter name changes from Invalid parameter "NAME" to invalid parameter value: NAME Slight degratation, perhaps. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170822132255.23945-10-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster [Rebased, assertion added, commit message rewritten] Cc: "Dr. David Alan Gilbert" Signed-off-by: Markus Armbruster Message-Id: <1503564371-26090-7-git-send-email-armbru@redhat.com> --- hmp.c | 138 +++++++++++++++++++++++++++++++++-----------------------------= ---- 1 file changed, 68 insertions(+), 70 deletions(-) diff --git a/hmp.c b/hmp.c index 7e0bd3d63b..2b6e919501 100644 --- a/hmp.c +++ b/hmp.c @@ -1556,84 +1556,82 @@ void hmp_migrate_set_parameter(Monitor *mon, const = QDict *qdict) MigrateSetParameters *p =3D g_new0(MigrateSetParameters, 1); uint64_t valuebw =3D 0; Error *err =3D NULL; - int i, ret; + int val, ret; =20 - for (i =3D 0; i < MIGRATION_PARAMETER__MAX; i++) { - if (strcmp(param, MigrationParameter_lookup[i]) =3D=3D 0) { - switch (i) { - case MIGRATION_PARAMETER_COMPRESS_LEVEL: - p->has_compress_level =3D true; - visit_type_int(v, param, &p->compress_level, &err); - break; - case MIGRATION_PARAMETER_COMPRESS_THREADS: - p->has_compress_threads =3D true; - visit_type_int(v, param, &p->compress_threads, &err); - break; - case MIGRATION_PARAMETER_DECOMPRESS_THREADS: - p->has_decompress_threads =3D true; - visit_type_int(v, param, &p->decompress_threads, &err); - break; - case MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL: - p->has_cpu_throttle_initial =3D true; - visit_type_int(v, param, &p->cpu_throttle_initial, &err); - break; - case MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT: - p->has_cpu_throttle_increment =3D true; - visit_type_int(v, param, &p->cpu_throttle_increment, &err); - break; - case MIGRATION_PARAMETER_TLS_CREDS: - p->has_tls_creds =3D true; - p->tls_creds =3D g_new0(StrOrNull, 1); - p->tls_creds->type =3D QTYPE_QSTRING; - visit_type_str(v, param, &p->tls_creds->u.s, &err); - break; - case MIGRATION_PARAMETER_TLS_HOSTNAME: - p->has_tls_hostname =3D true; - p->tls_hostname =3D g_new0(StrOrNull, 1); - p->tls_hostname->type =3D QTYPE_QSTRING; - visit_type_str(v, param, &p->tls_hostname->u.s, &err); - break; - case MIGRATION_PARAMETER_MAX_BANDWIDTH: - p->has_max_bandwidth =3D true; - /* - * Can't use visit_type_size() here, because it - * defaults to Bytes rather than Mebibytes. - */ - ret =3D qemu_strtosz_MiB(valuestr, NULL, &valuebw); - if (ret < 0 || valuebw > INT64_MAX - || (size_t)valuebw !=3D valuebw) { - error_setg(&err, "Invalid size %s", valuestr); - break; - } - p->max_bandwidth =3D valuebw; - break; - case MIGRATION_PARAMETER_DOWNTIME_LIMIT: - p->has_downtime_limit =3D true; - visit_type_int(v, param, &p->downtime_limit, &err); - break; - case MIGRATION_PARAMETER_X_CHECKPOINT_DELAY: - p->has_x_checkpoint_delay =3D true; - visit_type_int(v, param, &p->x_checkpoint_delay, &err); - break; - case MIGRATION_PARAMETER_BLOCK_INCREMENTAL: - p->has_block_incremental =3D true; - visit_type_bool(v, param, &p->block_incremental, &err); - break; - } + val =3D qapi_enum_parse(MigrationParameter_lookup, param, -1, &err); + if (val < 0) { + goto cleanup; + } =20 - if (err) { - goto cleanup; - } - - qmp_migrate_set_parameters(p, &err); + switch (val) { + case MIGRATION_PARAMETER_COMPRESS_LEVEL: + p->has_compress_level =3D true; + visit_type_int(v, param, &p->compress_level, &err); + break; + case MIGRATION_PARAMETER_COMPRESS_THREADS: + p->has_compress_threads =3D true; + visit_type_int(v, param, &p->compress_threads, &err); + break; + case MIGRATION_PARAMETER_DECOMPRESS_THREADS: + p->has_decompress_threads =3D true; + visit_type_int(v, param, &p->decompress_threads, &err); + break; + case MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL: + p->has_cpu_throttle_initial =3D true; + visit_type_int(v, param, &p->cpu_throttle_initial, &err); + break; + case MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT: + p->has_cpu_throttle_increment =3D true; + visit_type_int(v, param, &p->cpu_throttle_increment, &err); + break; + case MIGRATION_PARAMETER_TLS_CREDS: + p->has_tls_creds =3D true; + p->tls_creds =3D g_new0(StrOrNull, 1); + p->tls_creds->type =3D QTYPE_QSTRING; + visit_type_str(v, param, &p->tls_creds->u.s, &err); + break; + case MIGRATION_PARAMETER_TLS_HOSTNAME: + p->has_tls_hostname =3D true; + p->tls_hostname =3D g_new0(StrOrNull, 1); + p->tls_hostname->type =3D QTYPE_QSTRING; + visit_type_str(v, param, &p->tls_hostname->u.s, &err); + break; + case MIGRATION_PARAMETER_MAX_BANDWIDTH: + p->has_max_bandwidth =3D true; + /* + * Can't use visit_type_size() here, because it + * defaults to Bytes rather than Mebibytes. + */ + ret =3D qemu_strtosz_MiB(valuestr, NULL, &valuebw); + if (ret < 0 || valuebw > INT64_MAX + || (size_t)valuebw !=3D valuebw) { + error_setg(&err, "Invalid size %s", valuestr); break; } + p->max_bandwidth =3D valuebw; + break; + case MIGRATION_PARAMETER_DOWNTIME_LIMIT: + p->has_downtime_limit =3D true; + visit_type_int(v, param, &p->downtime_limit, &err); + break; + case MIGRATION_PARAMETER_X_CHECKPOINT_DELAY: + p->has_x_checkpoint_delay =3D true; + visit_type_int(v, param, &p->x_checkpoint_delay, &err); + break; + case MIGRATION_PARAMETER_BLOCK_INCREMENTAL: + p->has_block_incremental =3D true; + visit_type_bool(v, param, &p->block_incremental, &err); + break; + default: + assert(0); } =20 - if (i =3D=3D MIGRATION_PARAMETER__MAX) { - error_setg(&err, QERR_INVALID_PARAMETER, param); + if (err) { + goto cleanup; } =20 + qmp_migrate_set_parameters(p, &err); + cleanup: qapi_free_MigrateSetParameters(p); visit_free(v); --=20 2.13.5