From d9c57ca9f97a7856dcc465f2c3bfbdf36f049b74 Mon Sep 17 00:00:00 2001 From: Joao Martins Date: Fri, 5 Feb 2016 19:24:05 +0000 Subject: [PATCH] remote: enforce VIR_TYPED_PARAM_STRING_OKAY flag on client side serialization Commit 8cd1d54 consolidates both daemon and remote driver typed param serialization functions. The consolidation now enforces client to use VIR_TYPED_PARAM_STRING_OKAY flag to properly serialize string parameters, which server has used for quite some time now. And this caused an issue, since the commit had not adjusted client remote calls appropriately, thus causing a failure in blkiotune, numatune and migration APIs (as per Xen CI tests). This patch adjusts both remote_driver.c and gendispatch.pl to properly address this issue. http://lists.xenproject.org/archives/html/xen-devel/2016-02/msg01012.html Signed-off-by: Joao Martins Signed-off-by: Erik Skultety --- src/remote/remote_driver.c | 18 ++++++++++++------ src/rpc/gendispatch.pl | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 58787cd26e..7cf61cf562 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -6886,7 +6886,8 @@ remoteDomainMigrateBegin3Params(virDomainPtr domain, if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &args.params.params_val, - &args.params.params_len, 0) < 0) { + &args.params.params_len, + VIR_TYPED_PARAM_STRING_OKAY) < 0) { xdr_free((xdrproc_t) xdr_remote_domain_migrate_begin3_params_args, (char *) &args); goto cleanup; @@ -6953,7 +6954,8 @@ remoteDomainMigratePrepare3Params(virConnectPtr dconn, if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &args.params.params_val, - &args.params.params_len, 0) < 0) { + &args.params.params_len, + VIR_TYPED_PARAM_STRING_OKAY) < 0) { xdr_free((xdrproc_t) xdr_remote_domain_migrate_prepare3_params_args, (char *) &args); goto cleanup; @@ -7040,7 +7042,8 @@ remoteDomainMigratePrepareTunnel3Params(virConnectPtr dconn, if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &args.params.params_val, - &args.params.params_len, 0) < 0) { + &args.params.params_len, + VIR_TYPED_PARAM_STRING_OKAY) < 0) { xdr_free((xdrproc_t) xdr_remote_domain_migrate_prepare_tunnel3_params_args, (char *) &args); goto cleanup; @@ -7129,7 +7132,8 @@ remoteDomainMigratePerform3Params(virDomainPtr dom, if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &args.params.params_val, - &args.params.params_len, 0) < 0) { + &args.params.params_len, + VIR_TYPED_PARAM_STRING_OKAY) < 0) { xdr_free((xdrproc_t) xdr_remote_domain_migrate_perform3_params_args, (char *) &args); goto cleanup; @@ -7201,7 +7205,8 @@ remoteDomainMigrateFinish3Params(virConnectPtr dconn, if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &args.params.params_val, - &args.params.params_len, 0) < 0) { + &args.params.params_len, + VIR_TYPED_PARAM_STRING_OKAY) < 0) { xdr_free((xdrproc_t) xdr_remote_domain_migrate_finish3_params_args, (char *) &args); goto cleanup; @@ -7275,7 +7280,8 @@ remoteDomainMigrateConfirm3Params(virDomainPtr domain, if (virTypedParamsSerialize(params, nparams, (virTypedParameterRemotePtr *) &args.params.params_val, - &args.params.params_len, 0) < 0) { + &args.params.params_len, + VIR_TYPED_PARAM_STRING_OKAY) < 0) { xdr_free((xdrproc_t) xdr_remote_domain_migrate_confirm3_params_args, (char *) &args); goto cleanup; diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 658efaeef9..5c99409edb 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -1215,7 +1215,8 @@ elsif ($mode eq "client") { push(@args_list, "int n$1"); push(@setters_list2, "if (virTypedParamsSerialize($1, n$1,\n" . " (virTypedParameterRemotePtr *) &args.$1.$1_val,\n" . - " &args.$1.$1_len, 0) < 0) {\n" . + " &args.$1.$1_len,\n" . + " VIR_TYPED_PARAM_STRING_OKAY) < 0) {\n" . " xdr_free((xdrproc_t)xdr_$call->{args}, (char *)&args);\n" . " goto done;\n" . " }");