[libvirt] [PATCH 6/7] Fix sign mismatches between public API, driver API and XDR protocol
Daniel P. Berrange
berrange at redhat.com
Wed May 25 16:17:35 UTC 2011
On Mon, May 23, 2011 at 07:36:09PM +0200, Matthias Bolte wrote:
> In most cases this affects flags parameters that are unsigned in the
> public and driver API but signed in the XDR protocol. Switch the
> XDR protocol to unsigned for those.
>
> A counterexample is virNWFilterGetXMLDesc. Its flags parameter is signed
> in the public API and XDR protocol, but unsigned in the driver API.
> ---
> daemon/remote_generator.pl | 16 ----------------
> src/driver.h | 2 +-
> src/nwfilter/nwfilter_driver.c | 2 +-
> src/remote/remote_protocol.x | 30 +++++++++++++++---------------
> src/remote_protocol-structs | 30 +++++++++++++++---------------
> 5 files changed, 32 insertions(+), 48 deletions(-)
>
> diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
> index 9143b3a..ac808fb 100755
> --- a/daemon/remote_generator.pl
> +++ b/daemon/remote_generator.pl
> @@ -896,22 +896,6 @@ elsif ($opt_k) {
> $type_name .= $2;
> $type_name =~ s/hyper/long/;
>
> - if ($type_name eq "int") {
> - # fix bad decisions in the xdr protocol
> - if ($arg_name eq "flags" and
> - $call->{ProcName} ne "DomainCoreDump" and
> - $call->{ProcName} ne "DomainGetXMLDesc" and
> - $call->{ProcName} ne "NetworkGetXMLDesc") {
> - $type_name = "unsigned int";
> - } elsif ($arg_name eq "nvcpus" and
> - $call->{ProcName} eq "DomainSetVcpus") {
> - $type_name = "unsigned int";
> - } elsif ($arg_name eq "vcpu" and
> - $call->{ProcName} eq "DomainPinVcpu") {
> - $type_name = "unsigned int";
> - }
> - }
> -
> # SPECIAL: some hyper parameters map to long longs
> if (($call->{ProcName} eq "DomainMigrateSetMaxDowntime" and
> $arg_name eq "downtime") or
> diff --git a/src/driver.h b/src/driver.h
> index 450dd53..58e8f02 100644
> --- a/src/driver.h
> +++ b/src/driver.h
> @@ -1282,7 +1282,7 @@ typedef int
>
> typedef char *
> (*virDrvNWFilterGetXMLDesc) (virNWFilterPtr nwfilter,
> - unsigned int flags);
> + int flags);
>
>
> typedef struct _virNWFilterDriver virNWFilterDriver;
> diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
> index db3d789..d9ac17e 100644
> --- a/src/nwfilter/nwfilter_driver.c
> +++ b/src/nwfilter/nwfilter_driver.c
> @@ -407,7 +407,7 @@ cleanup:
>
> static char *
> nwfilterGetXMLDesc(virNWFilterPtr obj,
> - unsigned int flags) {
> + int flags) {
> virNWFilterDriverStatePtr driver = obj->conn->nwfilterPrivateData;
> virNWFilterObjPtr nwfilter;
> char *ret = NULL;
> diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x
> index f5218cd..2b9f9de 100644
> --- a/src/remote/remote_protocol.x
> +++ b/src/remote/remote_protocol.x
> @@ -430,7 +430,7 @@ struct remote_get_max_vcpus_ret {
>
> struct remote_node_get_info_ret {
> char model[32];
> - hyper memory;
> + unsigned hyper memory;
> int cpus;
> int mhz;
> int nodes;
> @@ -612,7 +612,7 @@ struct remote_num_of_domains_ret {
>
> struct remote_domain_create_xml_args {
> remote_nonnull_string xml_desc;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_create_xml_ret {
> @@ -657,7 +657,7 @@ struct remote_domain_shutdown_args {
>
> struct remote_domain_reboot_args {
> remote_nonnull_domain dom;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_destroy_args {
> @@ -843,7 +843,7 @@ struct remote_domain_inject_nmi_args {
>
> struct remote_domain_set_vcpus_args {
> remote_nonnull_domain dom;
> - int nvcpus;
> + unsigned int nvcpus;
> };
>
> struct remote_domain_set_vcpus_flags_args {
> @@ -863,7 +863,7 @@ struct remote_domain_get_vcpus_flags_ret {
>
> struct remote_domain_pin_vcpu_args {
> remote_nonnull_domain dom;
> - int vcpu;
> + unsigned int vcpu;
> opaque cpumap<REMOTE_CPUMAP_MAX>;
> };
>
> @@ -1527,7 +1527,7 @@ struct remote_node_device_reset_args {
>
> struct remote_node_device_create_xml_args {
> remote_nonnull_string xml_desc;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_node_device_create_xml_ret {
> @@ -1871,7 +1871,7 @@ struct remote_domain_managed_save_remove_args {
> struct remote_domain_snapshot_create_xml_args {
> remote_nonnull_domain dom;
> remote_nonnull_string xml_desc;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_create_xml_ret {
> @@ -1880,7 +1880,7 @@ struct remote_domain_snapshot_create_xml_ret {
>
> struct remote_domain_snapshot_get_xml_desc_args {
> remote_nonnull_domain_snapshot snap;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_get_xml_desc_ret {
> @@ -1889,7 +1889,7 @@ struct remote_domain_snapshot_get_xml_desc_ret {
>
> struct remote_domain_snapshot_num_args {
> remote_nonnull_domain dom;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_num_ret {
> @@ -1899,7 +1899,7 @@ struct remote_domain_snapshot_num_ret {
> struct remote_domain_snapshot_list_names_args {
> remote_nonnull_domain dom;
> int maxnames;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_list_names_ret {
> @@ -1909,7 +1909,7 @@ struct remote_domain_snapshot_list_names_ret {
> struct remote_domain_snapshot_lookup_by_name_args {
> remote_nonnull_domain dom;
> remote_nonnull_string name;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_lookup_by_name_ret {
> @@ -1918,7 +1918,7 @@ struct remote_domain_snapshot_lookup_by_name_ret {
>
> struct remote_domain_has_current_snapshot_args {
> remote_nonnull_domain dom;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_has_current_snapshot_ret {
> @@ -1927,7 +1927,7 @@ struct remote_domain_has_current_snapshot_ret {
>
> struct remote_domain_snapshot_current_args {
> remote_nonnull_domain dom;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_current_ret {
> @@ -1936,12 +1936,12 @@ struct remote_domain_snapshot_current_ret {
>
> struct remote_domain_revert_to_snapshot_args {
> remote_nonnull_domain_snapshot snap;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_snapshot_delete_args {
> remote_nonnull_domain_snapshot snap;
> - int flags;
> + unsigned int flags;
> };
>
> struct remote_domain_open_console_args {
> diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs
> index fd23fa0..04f36ca 100644
> --- a/src/remote_protocol-structs
> +++ b/src/remote_protocol-structs
> @@ -140,7 +140,7 @@ struct remote_get_max_vcpus_ret {
> };
> struct remote_node_get_info_ret {
> char model[32];
> - int64_t memory;
> + uint64_t memory;
> int cpus;
> int mhz;
> int nodes;
> @@ -325,7 +325,7 @@ struct remote_num_of_domains_ret {
> };
> struct remote_domain_create_xml_args {
> remote_nonnull_string xml_desc;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_create_xml_ret {
> remote_nonnull_domain dom;
> @@ -359,7 +359,7 @@ struct remote_domain_shutdown_args {
> };
> struct remote_domain_reboot_args {
> remote_nonnull_domain dom;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_destroy_args {
> remote_nonnull_domain dom;
> @@ -526,7 +526,7 @@ struct remote_domain_inject_nmi_args {
> };
> struct remote_domain_set_vcpus_args {
> remote_nonnull_domain dom;
> - int nvcpus;
> + u_int nvcpus;
> };
> struct remote_domain_set_vcpus_flags_args {
> remote_nonnull_domain dom;
> @@ -542,7 +542,7 @@ struct remote_domain_get_vcpus_flags_ret {
> };
> struct remote_domain_pin_vcpu_args {
> remote_nonnull_domain dom;
> - int vcpu;
> + u_int vcpu;
> struct {
> u_int cpumap_len;
> char * cpumap_val;
> @@ -1103,7 +1103,7 @@ struct remote_node_device_reset_args {
> };
> struct remote_node_device_create_xml_args {
> remote_nonnull_string xml_desc;
> - int flags;
> + u_int flags;
> };
> struct remote_node_device_create_xml_ret {
> remote_nonnull_node_device dev;
> @@ -1370,21 +1370,21 @@ struct remote_domain_managed_save_remove_args {
> struct remote_domain_snapshot_create_xml_args {
> remote_nonnull_domain dom;
> remote_nonnull_string xml_desc;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_create_xml_ret {
> remote_nonnull_domain_snapshot snap;
> };
> struct remote_domain_snapshot_get_xml_desc_args {
> remote_nonnull_domain_snapshot snap;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_get_xml_desc_ret {
> remote_nonnull_string xml;
> };
> struct remote_domain_snapshot_num_args {
> remote_nonnull_domain dom;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_num_ret {
> int num;
> @@ -1392,7 +1392,7 @@ struct remote_domain_snapshot_num_ret {
> struct remote_domain_snapshot_list_names_args {
> remote_nonnull_domain dom;
> int maxnames;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_list_names_ret {
> struct {
> @@ -1403,32 +1403,32 @@ struct remote_domain_snapshot_list_names_ret {
> struct remote_domain_snapshot_lookup_by_name_args {
> remote_nonnull_domain dom;
> remote_nonnull_string name;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_lookup_by_name_ret {
> remote_nonnull_domain_snapshot snap;
> };
> struct remote_domain_has_current_snapshot_args {
> remote_nonnull_domain dom;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_has_current_snapshot_ret {
> int result;
> };
> struct remote_domain_snapshot_current_args {
> remote_nonnull_domain dom;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_current_ret {
> remote_nonnull_domain_snapshot snap;
> };
> struct remote_domain_revert_to_snapshot_args {
> remote_nonnull_domain_snapshot snap;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_snapshot_delete_args {
> remote_nonnull_domain_snapshot snap;
> - int flags;
> + u_int flags;
> };
> struct remote_domain_open_console_args {
> remote_nonnull_domain dom;
ACK
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list