[libvirt] [PATCH 6/7] Fix sign mismatches between public API, driver API and XDR protocol

Matthias Bolte matthias.bolte at googlemail.com
Mon May 23 17:36:09 UTC 2011


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;
-- 
1.7.0.4




More information about the libvir-list mailing list