]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNetClientStreamNew: Track origin stream
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 12 Apr 2016 09:38:12 +0000 (11:38 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 18 May 2017 05:42:13 +0000 (07:42 +0200)
Add a virStreamPtr pointer to the _virNetClientStream
in order to reverse track the parent stream.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/remote/remote_driver.c
src/rpc/gendispatch.pl
src/rpc/virnetclientstream.c
src/rpc/virnetclientstream.h

index e79e796f22243dbc5d6d871c32f56336c584fc98..b152be523d355895e572e4b7a13acbc757c0cf8d 100644 (file)
@@ -6170,7 +6170,8 @@ remoteDomainMigratePrepareTunnel3(virConnectPtr dconn,
     memset(&args, 0, sizeof(args));
     memset(&ret, 0, sizeof(ret));
 
-    if (!(netst = virNetClientStreamNew(priv->remoteProgram,
+    if (!(netst = virNetClientStreamNew(st,
+                                        priv->remoteProgram,
                                         REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3,
                                         priv->counter)))
         goto done;
@@ -7094,7 +7095,8 @@ remoteDomainMigratePrepareTunnel3Params(virConnectPtr dconn,
         goto cleanup;
     }
 
-    if (!(netst = virNetClientStreamNew(priv->remoteProgram,
+    if (!(netst = virNetClientStreamNew(st,
+                                        priv->remoteProgram,
                                         REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3_PARAMS,
                                         priv->counter)))
         goto cleanup;
index 173189c81be3cd09e674cc82845cb0c30c4c3e8a..e608812cebcee1e52c57206cce16d6bfc9717c65 100755 (executable)
@@ -1738,7 +1738,7 @@ elsif ($mode eq "client") {
 
         if ($call->{streamflag} ne "none") {
             print "\n";
-            print "    if (!(netst = virNetClientStreamNew(priv->remoteProgram, $call->{constname}, priv->counter)))\n";
+            print "    if (!(netst = virNetClientStreamNew(st, priv->remoteProgram, $call->{constname}, priv->counter)))\n";
             print "        goto done;\n";
             print "\n";
             print "    if (virNetClientAddStream(priv->client, netst) < 0) {\n";
index 2105bd0a9c12765cb4a3a78fff17f373da3a7924..9a44304b7c146f64896c5b4e51ee4bba0b434d49 100644 (file)
@@ -36,6 +36,8 @@ VIR_LOG_INIT("rpc.netclientstream");
 struct _virNetClientStream {
     virObjectLockable parent;
 
+    virStreamPtr stream; /* Reverse pointer to parent stream */
+
     virNetClientProgramPtr prog;
     int proc;
     unsigned serial;
@@ -133,7 +135,8 @@ virNetClientStreamEventTimer(int timer ATTRIBUTE_UNUSED, void *opaque)
 }
 
 
-virNetClientStreamPtr virNetClientStreamNew(virNetClientProgramPtr prog,
+virNetClientStreamPtr virNetClientStreamNew(virStreamPtr stream,
+                                            virNetClientProgramPtr prog,
                                             int proc,
                                             unsigned serial)
 {
@@ -145,6 +148,7 @@ virNetClientStreamPtr virNetClientStreamNew(virNetClientProgramPtr prog,
     if (!(st = virObjectLockableNew(virNetClientStreamClass)))
         return NULL;
 
+    st->stream = virObjectRef(stream);
     st->prog = virObjectRef(prog);
     st->proc = proc;
     st->serial = serial;
@@ -163,6 +167,7 @@ void virNetClientStreamDispose(void *obj)
         virNetMessageFree(msg);
     }
     virObjectUnref(st->prog);
+    virObjectUnref(st->stream);
 }
 
 bool virNetClientStreamMatches(virNetClientStreamPtr st,
index a0d2be9ed7496d22afd6b961b745a3388666c847..e278dab85e20fae9de60356f515902d3edd828bc 100644 (file)
@@ -32,7 +32,8 @@ typedef virNetClientStream *virNetClientStreamPtr;
 typedef void (*virNetClientStreamEventCallback)(virNetClientStreamPtr stream,
                                                 int events, void *opaque);
 
-virNetClientStreamPtr virNetClientStreamNew(virNetClientProgramPtr prog,
+virNetClientStreamPtr virNetClientStreamNew(virStreamPtr stream,
+                                            virNetClientProgramPtr prog,
                                             int proc,
                                             unsigned serial);