
On 4/26/22 10:47, Claudio Fontana wrote:
Signed-off-by: Claudio Fontana <cfontana@suse.de> --- src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 14 +++++++++++++- src/remote_protocol-structs | 8 ++++++++ 3 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 1fc5d41971..c5b644ce49 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8449,6 +8449,7 @@ static virHypervisorDriver hypervisor_driver = { .domainSaveParametersFlags = remoteDomainSaveParametersFlags, /* 8.3.0 */ .domainRestore = remoteDomainRestore, /* 0.3.0 */ .domainRestoreFlags = remoteDomainRestoreFlags, /* 0.9.4 */ + .domainRestoreParametersFlags = remoteDomainRestoreParametersFlags, /* 8.3.0 */ .domainSaveImageGetXMLDesc = remoteDomainSaveImageGetXMLDesc, /* 0.9.4 */ .domainSaveImageDefineXML = remoteDomainSaveImageDefineXML, /* 0.9.4 */ .domainCoreDump = remoteDomainCoreDump, /* 0.3.0 */ diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index c2ae5c5748..7b919ef375 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -3236,6 +3236,11 @@ struct remote_domain_save_parameters_flags_args { unsigned int flags; };
+struct remote_domain_restore_parameters_flags_args { + remote_typed_param params<REMOTE_DOMAIN_SAVE_PARAMS_MAX>; + unsigned int flags; +}; + /* The device removed event is the last event where we have to support * dual forms for back-compat to older clients; all future events can * use just the modern form with callbackID. */ @@ -6935,5 +6940,12 @@ enum remote_procedure { * @generate: both * @acl: domain:hibernate */ - REMOTE_PROC_DOMAIN_SAVE_PARAMETERS_FLAGS = 440 + REMOTE_PROC_DOMAIN_SAVE_PARAMETERS_FLAGS = 440, + + /** + * @generate: both + * @acl: domain:start + * @acl: domain:write + */ + REMOTE_PROC_DOMAIN_RESTORE_PARAMETERS_FLAGS = 441
I've stared at this for quite a while but can't figure out why the dispatch stub does not pass virConnectPtr to virDomainRestoreParametersFlags. I'm hitting the following build failure In file included from ../src/remote/remote_daemon_dispatch.c:133: src/remote/remote_daemon_dispatch_stubs.h: In function ‘remoteDispatchDomainRestoreParametersFlags’: src/remote/remote_daemon_dispatch_stubs.h:10080:41: error: passing argument 1 of ‘virDomainRestoreParametersFlags’ from incompatible pointer type [-Werror=incompatible-pointer-types] 10080 | if (virDomainRestoreParametersFlags(params, nparams, args->flags) < 0) | ^~~~~~ | | | virTypedParameterPtr {aka struct _virTypedParameter *} In file included from ../include/libvirt/libvirt.h:36, from ../src/internal.h:65, from ../src/util/virerror.h:24, from ../src/remote/remote_daemon_dispatch.c:23: ../include/libvirt/libvirt-domain.h:1576:72: note: expected ‘virConnectPtr’ {aka ‘struct _virConnect *’} but argument is of type ‘virTypedParameterPtr’ {aka ‘struct _virTypedParameter *’} 1576 | int virDomainRestoreParametersFlags (virConnectPtr conn, Perhaps a bug in gendispatch.pl. I'm not familiar with the script or debugging it, but others here can likely provide help. Jim
}; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index 89eadeb644..72e92184ca 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -579,6 +579,13 @@ struct remote_domain_restore_flags_args { remote_string dxml; u_int flags; }; +struct remote_domain_restore_parameters_flags_args { + struct { + u_int params_len; + remote_typed_param * params_val; + } params; + u_int flags; +}; struct remote_domain_save_image_get_xml_desc_args { remote_nonnull_string file; u_int flags; @@ -3698,4 +3705,5 @@ enum remote_procedure { REMOTE_PROC_DOMAIN_EVENT_MEMORY_DEVICE_SIZE_CHANGE = 438, REMOTE_PROC_DOMAIN_SET_LAUNCH_SECURITY_STATE = 439, REMOTE_PROC_DOMAIN_SAVE_PARAMETERS_FLAGS = 440, + REMOTE_PROC_DOMAIN_RESTORE_PARAMETERS_FLAGS = 441, };