[libvirt] [PATCH 22/22] remote generator, client: Handle arguments with limited length

Matthias Bolte matthias.bolte at googlemail.com
Sun Apr 24 09:14:09 UTC 2011


This adds length checks to all affected functions.
---
 daemon/remote_generator.pl        |   49 ++++++--
 src/remote/remote_client_bodies.c |  267 ++++++++++++++++++++++++++++++++++---
 src/remote/remote_driver.c        |  227 -------------------------------
 3 files changed, 287 insertions(+), 256 deletions(-)

diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl
index f5be8d6..ac9cde8 100755
--- a/daemon/remote_generator.pl
+++ b/daemon/remote_generator.pl
@@ -734,7 +734,6 @@ elsif ($opt_k) {
                           "DomainEventsRegisterAny",
                           "DomainMigratePrepareTunnel",
                           "DomainOpenConsole",
-                          "DomainPinVcpu",
                           "DomainSetSchedulerParameters",
                           "DomainSetMemoryParameters",
                           "DomainSetBlkioParameters",
@@ -748,19 +747,13 @@ elsif ($opt_k) {
                           "AuthSaslStep",
                           "AuthPolkit",
 
-                          "CPUBaseline",
                           "DomainCreate",
                           "DomainDestroy",
-                          "DomainMigrateFinish",
-                          "NWFilterDefineXML", # public API and XDR protocol mismatch
-                          "DomainMigratePerform",
-                          "DomainMigrateFinish2",
                           "FindStoragePoolSources",
                           "IsSecure",
                           "SupportsFeature",
                           "NodeGetCellsFreeMemory",
                           "ListDomains",
-                          "SecretSetValue",
                           "GetURI",
                           "NodeDeviceDettach",
                           "NodeDeviceReset",
@@ -806,6 +799,7 @@ elsif ($opt_k) {
         # handle arguments to the function
         my @args_list = ();
         my @vars_list = ();
+        my @args_check_list = ();
         my @setters_list = ();
         my $priv_src = "conn";
         my $priv_name = "privateData";
@@ -859,11 +853,30 @@ elsif ($opt_k) {
                 } elsif ($args_member =~ m/^remote_string (\S+);/) {
                     push(@args_list, "const char *$1");
                     push(@setters_list, "args.$1 = $1 ? (char **)&$1 : NULL;");
+                } elsif ($args_member =~ m/^remote_nonnull_string (\S+)<(\S+)>;/) {
+                    push(@args_list, "const char **$1");
+                    push(@args_list, "unsigned int ${1}len");
+                    push(@setters_list, "args.$1.${1}_val = (char **)$1;");
+                    push(@setters_list, "args.$1.${1}_len = ${1}len;");
+                    push(@args_check_list, { name => "\"$1\"", arg => "${1}len", limit => $2 });
                 } elsif ($args_member =~ m/^remote_nonnull_string (\S+);/) {
                     push(@args_list, "const char *$1");
                     push(@setters_list, "args.$1 = (char *)$1;");
-                } elsif ($args_member =~ m/(\S+)<\S+>;/) {
-                    # ignored for now
+                } elsif ($args_member =~ m/(\S+)<(\S+)>;/) {
+                    if ($call->{ProcName} eq "SecretSetValue") {
+                        push(@args_list, "const unsigned char *$1");
+                        push(@args_list, "size_t ${1}len");
+                    } elsif ($call->{ProcName} eq "DomainPinVcpu") {
+                        push(@args_list, "unsigned char *$1");
+                        push(@args_list, "int ${1}len");
+                    } else {
+                        push(@args_list, "const char *$1");
+                        push(@args_list, "int ${1}len");
+                    }
+
+                    push(@setters_list, "args.$1.${1}_val = (char *)$1;");
+                    push(@setters_list, "args.$1.${1}_len = ${1}len;");
+                    push(@args_check_list, { name => "\"$1\"", arg => "${1}len", limit => $2 });
                 } elsif ($args_member =~ m/^(.*) (\S+);/) {
                     my $type_name = $1;
                     my $arg_name = $2;
@@ -882,6 +895,9 @@ elsif ($opt_k) {
                         } 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";
                         }
                     }
 
@@ -910,6 +926,11 @@ elsif ($opt_k) {
             push(@args_list, "virConnectPtr conn");
         }
 
+        if ($call->{ProcName} eq "NWFilterDefineXML") {
+            # fix public API and XDR protocol mismatch
+            push(@args_list, "unsigned int flags ATTRIBUTE_UNUSED");
+        }
+
         # fix priv_name for the NumOf* functions
         if ($priv_name eq "privateData" and
             !($call->{ProcName} =~ m/(Domains|DomainSnapshot)/) and
@@ -1082,6 +1103,16 @@ elsif ($opt_k) {
         print "\n";
         print "    remoteDriverLock(priv);\n";
 
+        foreach my $args_check (@args_check_list) {
+            print "\n";
+            print "    if ($args_check->{arg} > $args_check->{limit}) {\n";
+            print "        remoteError(VIR_ERR_RPC,\n";
+            print "                    _(\"%s length greater than maximum: %d > %d\"),\n";
+            print "                    $args_check->{name}, (int)$args_check->{arg}, $args_check->{limit});\n";
+            print "        goto done;\n";
+            print "    }\n";
+        }
+
         if ($single_ret_as_list) {
             print "\n";
             print "    if ($single_ret_list_max_var > $single_ret_list_max_define) {\n";
diff --git a/src/remote/remote_client_bodies.c b/src/remote/remote_client_bodies.c
index 4970c23..7a77d70 100644
--- a/src/remote/remote_client_bodies.c
+++ b/src/remote/remote_client_bodies.c
@@ -14,7 +14,40 @@
 
 /* remoteDispatchClose has to be implemented manually */
 
-/* remoteDispatchCPUBaseline has to be implemented manually */
+static char *
+remoteCPUBaseline(virConnectPtr conn, const char **xmlCPUs, unsigned int xmlCPUslen, unsigned int flags)
+{
+    char *rv = NULL;
+    struct private_data *priv = conn->privateData;
+    remote_cpu_baseline_args args;
+    remote_cpu_baseline_ret ret;
+
+    remoteDriverLock(priv);
+
+    if (xmlCPUslen > REMOTE_CPU_BASELINE_MAX) {
+        remoteError(VIR_ERR_RPC,
+                    _("%s length greater than maximum: %d > %d"),
+                    "xmlCPUs", (int)xmlCPUslen, REMOTE_CPU_BASELINE_MAX);
+        goto done;
+    }
+
+    args.xmlCPUs.xmlCPUs_val = (char **)xmlCPUs;
+    args.xmlCPUs.xmlCPUs_len = xmlCPUslen;
+    args.flags = flags;
+
+    memset(&ret, 0, sizeof ret);
+
+    if (call(conn, priv, 0, REMOTE_PROC_CPU_BASELINE,
+             (xdrproc_t)xdr_remote_cpu_baseline_args, (char *)&args,
+             (xdrproc_t)xdr_remote_cpu_baseline_ret, (char *)&ret) == -1)
+        goto done;
+
+    rv = ret.cpu;
+
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
 
 static int
 remoteCPUCompare(virConnectPtr conn, const char *xml, unsigned int flags)
@@ -863,11 +896,118 @@ done:
 
 /* remoteDispatchDomainMemoryStats has to be implemented manually */
 
-/* remoteDispatchDomainMigrateFinish has to be implemented manually */
+static virDomainPtr
+remoteDomainMigrateFinish(virConnectPtr conn, const char *dname, const char *cookie, int cookielen, const char *uri, unsigned long flags)
+{
+    virDomainPtr rv = NULL;
+    struct private_data *priv = conn->privateData;
+    remote_domain_migrate_finish_args args;
+    remote_domain_migrate_finish_ret ret;
+
+    remoteDriverLock(priv);
+
+    if (cookielen > REMOTE_MIGRATE_COOKIE_MAX) {
+        remoteError(VIR_ERR_RPC,
+                    _("%s length greater than maximum: %d > %d"),
+                    "cookie", (int)cookielen, REMOTE_MIGRATE_COOKIE_MAX);
+        goto done;
+    }
+
+    args.dname = (char *)dname;
+    args.cookie.cookie_val = (char *)cookie;
+    args.cookie.cookie_len = cookielen;
+    args.uri = (char *)uri;
+    args.flags = flags;
+
+    memset(&ret, 0, sizeof ret);
+
+    if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH,
+             (xdrproc_t)xdr_remote_domain_migrate_finish_args, (char *)&args,
+             (xdrproc_t)xdr_remote_domain_migrate_finish_ret, (char *)&ret) == -1)
+        goto done;
+
+    rv = get_nonnull_domain(conn, ret.ddom);
+    xdr_free((xdrproc_t)xdr_remote_domain_migrate_finish_ret, (char *)&ret);
+
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
+
+static virDomainPtr
+remoteDomainMigrateFinish2(virConnectPtr conn, const char *dname, const char *cookie, int cookielen, const char *uri, unsigned long flags, int retcode)
+{
+    virDomainPtr rv = NULL;
+    struct private_data *priv = conn->privateData;
+    remote_domain_migrate_finish2_args args;
+    remote_domain_migrate_finish2_ret ret;
+
+    remoteDriverLock(priv);
+
+    if (cookielen > REMOTE_MIGRATE_COOKIE_MAX) {
+        remoteError(VIR_ERR_RPC,
+                    _("%s length greater than maximum: %d > %d"),
+                    "cookie", (int)cookielen, REMOTE_MIGRATE_COOKIE_MAX);
+        goto done;
+    }
+
+    args.dname = (char *)dname;
+    args.cookie.cookie_val = (char *)cookie;
+    args.cookie.cookie_len = cookielen;
+    args.uri = (char *)uri;
+    args.flags = flags;
+    args.retcode = retcode;
+
+    memset(&ret, 0, sizeof ret);
+
+    if (call(conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH2,
+             (xdrproc_t)xdr_remote_domain_migrate_finish2_args, (char *)&args,
+             (xdrproc_t)xdr_remote_domain_migrate_finish2_ret, (char *)&ret) == -1)
+        goto done;
+
+    rv = get_nonnull_domain(conn, ret.ddom);
+    xdr_free((xdrproc_t)xdr_remote_domain_migrate_finish2_ret, (char *)&ret);
+
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
+
+static int
+remoteDomainMigratePerform(virDomainPtr dom, const char *cookie, int cookielen, const char *uri, unsigned long flags, const char *dname, unsigned long resource)
+{
+    int rv = -1;
+    struct private_data *priv = dom->conn->privateData;
+    remote_domain_migrate_perform_args args;
+
+    remoteDriverLock(priv);
+
+    if (cookielen > REMOTE_MIGRATE_COOKIE_MAX) {
+        remoteError(VIR_ERR_RPC,
+                    _("%s length greater than maximum: %d > %d"),
+                    "cookie", (int)cookielen, REMOTE_MIGRATE_COOKIE_MAX);
+        goto done;
+    }
+
+    make_nonnull_domain(&args.dom, dom);
+    args.cookie.cookie_val = (char *)cookie;
+    args.cookie.cookie_len = cookielen;
+    args.uri = (char *)uri;
+    args.flags = flags;
+    args.dname = dname ? (char **)&dname : NULL;
+    args.resource = resource;
+
+    if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_PERFORM,
+             (xdrproc_t)xdr_remote_domain_migrate_perform_args, (char *)&args,
+             (xdrproc_t)xdr_void, (char *)NULL) == -1)
+        goto done;
 
-/* remoteDispatchDomainMigrateFinish2 has to be implemented manually */
+    rv = 0;
 
-/* remoteDispatchDomainMigratePerform has to be implemented manually */
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
 
 /* remoteDispatchDomainMigratePrepare has to be implemented manually */
 
@@ -927,7 +1067,38 @@ done:
 
 /* remoteDispatchDomainOpenConsole has to be implemented manually */
 
-/* remoteDispatchDomainPinVcpu has to be implemented manually */
+static int
+remoteDomainPinVcpu(virDomainPtr dom, unsigned int vcpu, unsigned char *cpumap, int cpumaplen)
+{
+    int rv = -1;
+    struct private_data *priv = dom->conn->privateData;
+    remote_domain_pin_vcpu_args args;
+
+    remoteDriverLock(priv);
+
+    if (cpumaplen > REMOTE_CPUMAP_MAX) {
+        remoteError(VIR_ERR_RPC,
+                    _("%s length greater than maximum: %d > %d"),
+                    "cpumap", (int)cpumaplen, REMOTE_CPUMAP_MAX);
+        goto done;
+    }
+
+    make_nonnull_domain(&args.dom, dom);
+    args.vcpu = vcpu;
+    args.cpumap.cpumap_val = (char *)cpumap;
+    args.cpumap.cpumap_len = cpumaplen;
+
+    if (call(dom->conn, priv, 0, REMOTE_PROC_DOMAIN_PIN_VCPU,
+             (xdrproc_t)xdr_remote_domain_pin_vcpu_args, (char *)&args,
+             (xdrproc_t)xdr_void, (char *)NULL) == -1)
+        goto done;
+
+    rv = 0;
+
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
 
 static int
 remoteDomainReboot(virDomainPtr dom, unsigned int flags)
@@ -1343,7 +1514,7 @@ remoteDomainSnapshotListNames(virDomainPtr dom, char **const names, int maxnames
 
     if (maxnames > REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_DOMAIN_SNAPSHOT_LIST_NAMES_MAX);
         goto done;
     }
@@ -1948,7 +2119,7 @@ remoteListDefinedDomains(virConnectPtr conn, char **const names, int maxnames)
 
     if (maxnames > REMOTE_DOMAIN_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_DOMAIN_NAME_LIST_MAX);
         goto done;
     }
@@ -2008,7 +2179,7 @@ remoteListDefinedInterfaces(virConnectPtr conn, char **const names, int maxnames
 
     if (maxnames > REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_DEFINED_INTERFACE_NAME_LIST_MAX);
         goto done;
     }
@@ -2068,7 +2239,7 @@ remoteListDefinedNetworks(virConnectPtr conn, char **const names, int maxnames)
 
     if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_NETWORK_NAME_LIST_MAX);
         goto done;
     }
@@ -2128,7 +2299,7 @@ remoteListDefinedStoragePools(virConnectPtr conn, char **const names, int maxnam
 
     if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_STORAGE_POOL_NAME_LIST_MAX);
         goto done;
     }
@@ -2190,7 +2361,7 @@ remoteListInterfaces(virConnectPtr conn, char **const names, int maxnames)
 
     if (maxnames > REMOTE_INTERFACE_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_INTERFACE_NAME_LIST_MAX);
         goto done;
     }
@@ -2250,7 +2421,7 @@ remoteListNetworks(virConnectPtr conn, char **const names, int maxnames)
 
     if (maxnames > REMOTE_NETWORK_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_NETWORK_NAME_LIST_MAX);
         goto done;
     }
@@ -2310,7 +2481,7 @@ remoteListNWFilters(virConnectPtr conn, char **const names, int maxnames)
 
     if (maxnames > REMOTE_NWFILTER_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_NWFILTER_NAME_LIST_MAX);
         goto done;
     }
@@ -2370,7 +2541,7 @@ remoteListSecrets(virConnectPtr conn, char **const uuids, int maxuuids)
 
     if (maxuuids > REMOTE_SECRET_UUID_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined uuids: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxuuids, REMOTE_SECRET_UUID_LIST_MAX);
         goto done;
     }
@@ -2430,7 +2601,7 @@ remoteListStoragePools(virConnectPtr conn, char **const names, int maxnames)
 
     if (maxnames > REMOTE_STORAGE_POOL_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_STORAGE_POOL_NAME_LIST_MAX);
         goto done;
     }
@@ -2905,7 +3076,7 @@ remoteNodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames)
 
     if (maxnames > REMOTE_NODE_DEVICE_CAPS_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_NODE_DEVICE_CAPS_LIST_MAX);
         goto done;
     }
@@ -3081,7 +3252,7 @@ remoteNodeListDevices(virConnectPtr conn, const char *cap, char **const names, i
 
     if (maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_NODE_DEVICE_NAME_LIST_MAX);
         goto done;
     }
@@ -3387,7 +3558,32 @@ done:
     return rv;
 }
 
-/* remoteDispatchNWFilterDefineXML has to be implemented manually */
+static virNWFilterPtr
+remoteNWFilterDefineXML(virConnectPtr conn, const char *xml, unsigned int flags ATTRIBUTE_UNUSED)
+{
+    virNWFilterPtr rv = NULL;
+    struct private_data *priv = conn->nwfilterPrivateData;
+    remote_nwfilter_define_xml_args args;
+    remote_nwfilter_define_xml_ret ret;
+
+    remoteDriverLock(priv);
+
+    args.xml = (char *)xml;
+
+    memset(&ret, 0, sizeof ret);
+
+    if (call(conn, priv, 0, REMOTE_PROC_NWFILTER_DEFINE_XML,
+             (xdrproc_t)xdr_remote_nwfilter_define_xml_args, (char *)&args,
+             (xdrproc_t)xdr_remote_nwfilter_define_xml_ret, (char *)&ret) == -1)
+        goto done;
+
+    rv = get_nonnull_nwfilter(conn, ret.nwfilter);
+    xdr_free((xdrproc_t)xdr_remote_nwfilter_define_xml_ret, (char *)&ret);
+
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
 
 static char *
 remoteNWFilterGetXMLDesc(virNWFilterPtr nwfilter, unsigned int flags)
@@ -3607,7 +3803,38 @@ done:
     return rv;
 }
 
-/* remoteDispatchSecretSetValue has to be implemented manually */
+static int
+remoteSecretSetValue(virSecretPtr secret, const unsigned char *value, size_t valuelen, unsigned int flags)
+{
+    int rv = -1;
+    struct private_data *priv = secret->conn->secretPrivateData;
+    remote_secret_set_value_args args;
+
+    remoteDriverLock(priv);
+
+    if (valuelen > REMOTE_SECRET_VALUE_MAX) {
+        remoteError(VIR_ERR_RPC,
+                    _("%s length greater than maximum: %d > %d"),
+                    "value", (int)valuelen, REMOTE_SECRET_VALUE_MAX);
+        goto done;
+    }
+
+    make_nonnull_secret(&args.secret, secret);
+    args.value.value_val = (char *)value;
+    args.value.value_len = valuelen;
+    args.flags = flags;
+
+    if (call(secret->conn, priv, 0, REMOTE_PROC_SECRET_SET_VALUE,
+             (xdrproc_t)xdr_remote_secret_set_value_args, (char *)&args,
+             (xdrproc_t)xdr_void, (char *)NULL) == -1)
+        goto done;
+
+    rv = 0;
+
+done:
+    remoteDriverUnlock(priv);
+    return rv;
+}
 
 static int
 remoteSecretUndefine(virSecretPtr secret)
@@ -3932,7 +4159,7 @@ remoteStoragePoolListVolumes(virStoragePoolPtr pool, char **const names, int max
 
     if (maxnames > REMOTE_STORAGE_VOL_NAME_LIST_MAX) {
         remoteError(VIR_ERR_RPC,
-                    _("too many remote undefined names: %d > %d"),
+                    _("too many remote undefineds: %d > %d"),
                     maxnames, REMOTE_STORAGE_VOL_NAME_LIST_MAX);
         goto done;
     }
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 8a0fc0e..c89561c 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -2213,42 +2213,6 @@ done:
 }
 
 static int
-remoteDomainPinVcpu (virDomainPtr domain,
-                     unsigned int vcpu,
-                     unsigned char *cpumap,
-                     int maplen)
-{
-    int rv = -1;
-    remote_domain_pin_vcpu_args args;
-    struct private_data *priv = domain->conn->privateData;
-
-    remoteDriverLock(priv);
-
-    if (maplen > REMOTE_CPUMAP_MAX) {
-        remoteError(VIR_ERR_RPC,
-                    _("map length greater than maximum: %d > %d"),
-                    maplen, REMOTE_CPUMAP_MAX);
-        goto done;
-    }
-
-    make_nonnull_domain (&args.dom, domain);
-    args.vcpu = vcpu;
-    args.cpumap.cpumap_len = maplen;
-    args.cpumap.cpumap_val = (char *) cpumap;
-
-    if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_PIN_VCPU,
-              (xdrproc_t) xdr_remote_domain_pin_vcpu_args, (char *) &args,
-              (xdrproc_t) xdr_void, (char *) NULL) == -1)
-        goto done;
-
-    rv = 0;
-
-done:
-    remoteDriverUnlock(priv);
-    return rv;
-}
-
-static int
 remoteDomainGetVcpus (virDomainPtr domain,
                       virVcpuInfoPtr info,
                       int maxinfo,
@@ -2442,76 +2406,6 @@ done:
 }
 
 static int
-remoteDomainMigratePerform (virDomainPtr domain,
-                            const char *cookie,
-                            int cookielen,
-                            const char *uri,
-                            unsigned long flags,
-                            const char *dname,
-                            unsigned long resource)
-{
-    int rv = -1;
-    remote_domain_migrate_perform_args args;
-    struct private_data *priv = domain->conn->privateData;
-
-    remoteDriverLock(priv);
-
-    make_nonnull_domain (&args.dom, domain);
-    args.cookie.cookie_len = cookielen;
-    args.cookie.cookie_val = (char *) cookie;
-    args.uri = (char *) uri;
-    args.flags = flags;
-    args.dname = dname == NULL ? NULL : (char **) &dname;
-    args.resource = resource;
-
-    if (call (domain->conn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_PERFORM,
-              (xdrproc_t) xdr_remote_domain_migrate_perform_args, (char *) &args,
-              (xdrproc_t) xdr_void, (char *) NULL) == -1)
-        goto done;
-
-    rv = 0;
-
-done:
-    remoteDriverUnlock(priv);
-    return rv;
-}
-
-static virDomainPtr
-remoteDomainMigrateFinish (virConnectPtr dconn,
-                           const char *dname,
-                           const char *cookie,
-                           int cookielen,
-                           const char *uri,
-                           unsigned long flags)
-{
-    virDomainPtr ddom = NULL;
-    remote_domain_migrate_finish_args args;
-    remote_domain_migrate_finish_ret ret;
-    struct private_data *priv = dconn->privateData;
-
-    remoteDriverLock(priv);
-
-    args.dname = (char *) dname;
-    args.cookie.cookie_len = cookielen;
-    args.cookie.cookie_val = (char *) cookie;
-    args.uri = (char *) uri;
-    args.flags = flags;
-
-    memset (&ret, 0, sizeof ret);
-    if (call (dconn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH,
-              (xdrproc_t) xdr_remote_domain_migrate_finish_args, (char *) &args,
-              (xdrproc_t) xdr_remote_domain_migrate_finish_ret, (char *) &ret) == -1)
-        goto done;
-
-    ddom = get_nonnull_domain (dconn, ret.ddom);
-    xdr_free ((xdrproc_t) &xdr_remote_domain_migrate_finish_ret, (char *) &ret);
-
-done:
-    remoteDriverUnlock(priv);
-    return ddom;
-}
-
-static int
 remoteDomainMigratePrepare2 (virConnectPtr dconn,
                              char **cookie, int *cookielen,
                              const char *uri_in, char **uri_out,
@@ -2569,43 +2463,6 @@ error:
     goto done;
 }
 
-static virDomainPtr
-remoteDomainMigrateFinish2 (virConnectPtr dconn,
-                            const char *dname,
-                            const char *cookie,
-                            int cookielen,
-                            const char *uri,
-                            unsigned long flags,
-                            int retcode)
-{
-    virDomainPtr ddom = NULL;
-    remote_domain_migrate_finish2_args args;
-    remote_domain_migrate_finish2_ret ret;
-    struct private_data *priv = dconn->privateData;
-
-    remoteDriverLock(priv);
-
-    args.dname = (char *) dname;
-    args.cookie.cookie_len = cookielen;
-    args.cookie.cookie_val = (char *) cookie;
-    args.uri = (char *) uri;
-    args.flags = flags;
-    args.retcode = retcode;
-
-    memset (&ret, 0, sizeof ret);
-    if (call (dconn, priv, 0, REMOTE_PROC_DOMAIN_MIGRATE_FINISH2,
-              (xdrproc_t) xdr_remote_domain_migrate_finish2_args, (char *) &args,
-              (xdrproc_t) xdr_remote_domain_migrate_finish2_ret, (char *) &ret) == -1)
-        goto done;
-
-    ddom = get_nonnull_domain (dconn, ret.ddom);
-    xdr_free ((xdrproc_t) &xdr_remote_domain_migrate_finish2_ret, (char *) &ret);
-
-done:
-    remoteDriverUnlock(priv);
-    return ddom;
-}
-
 static int
 remoteDomainCreate (virDomainPtr domain)
 {
@@ -3265,33 +3122,6 @@ remoteNWFilterClose(virConnectPtr conn)
     return remoteGenericClose(conn, &conn->nwfilterPrivateData);
 }
 
-static virNWFilterPtr
-remoteNWFilterDefineXML (virConnectPtr conn, const char *xmlDesc,
-                         unsigned int flags ATTRIBUTE_UNUSED)
-{
-    virNWFilterPtr net = NULL;
-    remote_nwfilter_define_xml_args args;
-    remote_nwfilter_define_xml_ret ret;
-    struct private_data *priv = conn->nwfilterPrivateData;
-
-    remoteDriverLock(priv);
-
-    args.xml = (char *) xmlDesc;
-
-    memset (&ret, 0, sizeof ret);
-    if (call (conn, priv, 0, REMOTE_PROC_NWFILTER_DEFINE_XML,
-              (xdrproc_t) xdr_remote_nwfilter_define_xml_args, (char *) &args,
-              (xdrproc_t) xdr_remote_nwfilter_define_xml_ret, (char *) &ret) == -1)
-        goto done;
-
-    net = get_nonnull_nwfilter (conn, ret.nwfilter);
-    xdr_free ((xdrproc_t) &xdr_remote_nwfilter_define_xml_ret, (char *) &ret);
-
-done:
-    remoteDriverUnlock(priv);
-    return net;
-}
-
 /*----------------------------------------------------------------------*/
 
 static int
@@ -4298,33 +4128,6 @@ remoteSecretClose (virConnectPtr conn)
     return remoteGenericClose(conn, &conn->secretPrivateData);
 }
 
-static int
-remoteSecretSetValue (virSecretPtr secret, const unsigned char *value,
-                      size_t value_size, unsigned int flags)
-{
-    int rv = -1;
-    remote_secret_set_value_args args;
-    struct private_data *priv = secret->conn->secretPrivateData;
-
-    remoteDriverLock (priv);
-
-    make_nonnull_secret (&args.secret, secret);
-    args.value.value_len = value_size;
-    args.value.value_val = (char *) value;
-    args.flags = flags;
-
-    if (call (secret->conn, priv, 0, REMOTE_PROC_SECRET_SET_VALUE,
-              (xdrproc_t) xdr_remote_secret_set_value_args, (char *) &args,
-              (xdrproc_t) xdr_void, (char *) NULL) == -1)
-        goto done;
-
-    rv = 0;
-
-done:
-    remoteDriverUnlock (priv);
-    return rv;
-}
-
 static unsigned char *
 remoteSecretGetValue (virSecretPtr secret, size_t *value_size,
                       unsigned int flags)
@@ -4901,36 +4704,6 @@ done:
     return rv;
 }
 
-static char *
-remoteCPUBaseline(virConnectPtr conn,
-                  const char **xmlCPUs,
-                  unsigned int ncpus,
-                  unsigned int flags)
-{
-    struct private_data *priv = conn->privateData;
-    remote_cpu_baseline_args args;
-    remote_cpu_baseline_ret ret;
-    char *cpu = NULL;
-
-    remoteDriverLock(priv);
-
-    args.xmlCPUs.xmlCPUs_len = ncpus;
-    args.xmlCPUs.xmlCPUs_val = (char **) xmlCPUs;
-    args.flags = flags;
-
-    memset(&ret, 0, sizeof (ret));
-    if (call(conn, priv, 0, REMOTE_PROC_CPU_BASELINE,
-             (xdrproc_t) xdr_remote_cpu_baseline_args, (char *) &args,
-             (xdrproc_t) xdr_remote_cpu_baseline_ret, (char *) &ret) == -1)
-        goto done;
-
-    cpu = ret.cpu;
-
-done:
-    remoteDriverUnlock(priv);
-    return cpu;
-}
-
 static int remoteDomainEventRegisterAny(virConnectPtr conn,
                                         virDomainPtr dom,
                                         int eventID,
-- 
1.7.0.4




More information about the libvir-list mailing list