]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Export remoteFreeTypedParameters internally via util
authorErik Skultety <eskultet@redhat.com>
Tue, 2 Feb 2016 12:19:35 +0000 (13:19 +0100)
committerErik Skultety <eskultet@redhat.com>
Wed, 3 Feb 2016 14:46:45 +0000 (15:46 +0100)
Since the method is static to remote_driver, it can't even be used by our
daemon. Other than that, it would be useful to be able to use it with admin as
well. This patch uses the new virTypedParameterRemote datatype introduced in
one of previous patches.

src/libvirt_private.syms
src/remote/remote_driver.c
src/rpc/gendispatch.pl
src/util/virtypedparam.c
src/util/virtypedparam.h

index f25c6faf49b594c38e329aaef6aefd2ed1303428..690e9578ec4262c336b11dc3dd01b86b8c4a7826 100644 (file)
@@ -2353,6 +2353,7 @@ virTypedParamsCopy;
 virTypedParamsDeserialize;
 virTypedParamsFilter;
 virTypedParamsGetStringList;
+virTypedParamsRemoteFree;
 virTypedParamsReplaceString;
 virTypedParamsValidate;
 
index b4c58e2cd62575d67b4c8333e7161061b2485a31..4d569c91bd57daefe89bf2d6cbfa4b402f029eb4 100644 (file)
@@ -1663,25 +1663,6 @@ remoteConnectListAllDomains(virConnectPtr conn,
     return rv;
 }
 
-/* Helper to free typed parameters. */
-static void
-remoteFreeTypedParameters(remote_typed_param *args_params_val,
-                          u_int args_params_len)
-{
-    size_t i;
-
-    if (args_params_val == NULL)
-        return;
-
-    for (i = 0; i < args_params_len; i++) {
-        VIR_FREE(args_params_val[i].field);
-        if (args_params_val[i].value.type == VIR_TYPED_PARAM_STRING)
-            VIR_FREE(args_params_val[i].value.remote_typed_param_value_u.s);
-    }
-
-    VIR_FREE(args_params_val);
-}
-
 /* Helper to serialize typed parameters. */
 static int
 remoteSerializeTypedParameters(virTypedParameterPtr params,
@@ -1738,7 +1719,7 @@ remoteSerializeTypedParameters(virTypedParameterPtr params,
     rv = 0;
 
  cleanup:
-    remoteFreeTypedParameters(val, nparams);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) val, nparams);
     return rv;
 }
 
@@ -6991,7 +6972,8 @@ remoteDomainMigrateBegin3Params(virDomainPtr domain,
     rv = ret.xml; /* caller frees */
 
  cleanup:
-    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+                             args.params.params_len);
     remoteDriverUnlock(priv);
     return rv;
 
@@ -7069,7 +7051,8 @@ remoteDomainMigratePrepare3Params(virConnectPtr dconn,
     rv = 0;
 
  cleanup:
-    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+                             args.params.params_len);
     VIR_FREE(ret.uri_out);
     remoteDriverUnlock(priv);
     return rv;
@@ -7159,7 +7142,8 @@ remoteDomainMigratePrepareTunnel3Params(virConnectPtr dconn,
     rv = 0;
 
  cleanup:
-    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+                             args.params.params_len);
     remoteDriverUnlock(priv);
     return rv;
 
@@ -7231,7 +7215,8 @@ remoteDomainMigratePerform3Params(virDomainPtr dom,
     rv = 0;
 
  cleanup:
-    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+                             args.params.params_len);
     remoteDriverUnlock(priv);
     return rv;
 
@@ -7307,7 +7292,8 @@ remoteDomainMigrateFinish3Params(virConnectPtr dconn,
              (char *) &ret);
 
  cleanup:
-    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+                             args.params.params_len);
     remoteDriverUnlock(priv);
     return rv;
 
@@ -7363,7 +7349,8 @@ remoteDomainMigrateConfirm3Params(virDomainPtr domain,
     rv = 0;
 
  cleanup:
-    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+                             args.params.params_len);
     remoteDriverUnlock(priv);
     return rv;
 }
index d7f42b13951f6782896e27f392535ecbfcf04a9e..9d64e63a049d1abd343e616b4c6711dec7edfad8 100755 (executable)
@@ -1217,7 +1217,8 @@ elsif ($mode eq "client") {
                                          "        xdr_free((xdrproc_t)xdr_$call->{args}, (char *)&args);\n" .
                                          "        goto done;\n" .
                                          "    }");
-                    push(@free_list, "    remoteFreeTypedParameters(args.params.params_val, args.params.params_len);\n");
+                    push(@free_list, "    virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,\n" .
+                                     "                             args.params.params_len);\n");
                 } elsif ($args_member =~ m/^((?:unsigned )?int) (\S+);\s*\/\*\s*call-by-reference\s*\*\//) {
                     my $type_name = "$1 *";
                     my $arg_name = $2;
index f1e7cf25a0d3c9294e63373a775cee7b7c48ab24..1bc78652d19606e6bfc73de043edcaae02b526b7 100644 (file)
@@ -1316,6 +1316,35 @@ virTypedParamsFree(virTypedParameterPtr params,
     VIR_FREE(params);
 }
 
+/**
+ * virTypedParamsRemoteFree:
+ * @remote_params_val: array of typed parameters as specified by
+ *                     (remote|admin)_protocol.h
+ * @remote_params_len: number of parameters in @remote_params_val
+ *
+ * Frees memory used by string representations of parameter identificators,
+ * memory used by string values of parameters and the memory occupied by
+ * @remote_params_val itself.
+ *
+ * Returns nothing.
+ */
+void
+virTypedParamsRemoteFree(virTypedParameterRemotePtr remote_params_val,
+                         unsigned int remote_params_len)
+{
+    size_t i;
+
+    if (!remote_params_val)
+        return;
+
+    for (i = 0; i < remote_params_len; i++) {
+        VIR_FREE(remote_params_val[i].field);
+        if (remote_params_val[i].value.type == VIR_TYPED_PARAM_STRING)
+            VIR_FREE(remote_params_val[i].value.remote_typed_param_value.s);
+    }
+    VIR_FREE(remote_params_val);
+}
+
 
 /**
  * virTypedParamsDeserialize:
index 98bf3aa3716e93843affa379aa8b42c02ddc16f1..df3547f4b8a9123d5a953b79c330ce57c189aa3f 100644 (file)
@@ -104,6 +104,9 @@ int virTypedParamsCopy(virTypedParameterPtr *dst,
 
 char *virTypedParameterToString(virTypedParameterPtr param);
 
+void virTypedParamsRemoteFree(virTypedParameterRemotePtr remote_params_val,
+                              unsigned int remote_params_len);
+
 int virTypedParamsDeserialize(virTypedParameterRemotePtr remote_params,
                               unsigned int remote_params_len,
                               int limit,