chrsrc->type = VIR_DOMAIN_CHR_TYPE_UNIX;
chrsrcpriv->sourcefd = qemuFDPassNewDirect(video->info.alias, priv);
- if (qemuFDPassAddFD(chrsrcpriv->sourcefd,
- &videopriv->vhost_user_fd,
- "-vhost-user") < 0)
- return -1;
+ qemuFDPassAddFD(chrsrcpriv->sourcefd, &videopriv->vhost_user_fd, "-vhost-user");
if (qemuBuildChardevCommand(cmd, chrsrc, chrAlias, priv->qemuCaps) < 0)
return -1;
vdpa = qemuFDPassNew(net->info.alias, priv);
- if (qemuFDPassAddFD(vdpa, &vdpafd, "-vdpa") < 0)
- return -1;
+ qemuFDPassAddFD(vdpa, &vdpafd, "-vdpa");
}
break;
passtpm = qemuFDPassNew(tpm->info.alias, priv);
passcancel = qemuFDPassNew(tpm->info.alias, priv);
- if (qemuFDPassAddFD(passtpm, &fdtpm, "-tpm") < 0 ||
- qemuFDPassAddFD(passcancel, &fdcancel, "-cancel") < 0)
- return -1;
+ qemuFDPassAddFD(passtpm, &fdtpm, "-tpm");
+ qemuFDPassAddFD(passcancel, &fdcancel, "-cancel");
}
break;
* @suffix is used to build the name of the file descriptor by concatenating
* it with @prefix passed to qemuFDPassNew. @suffix may be NULL, in which case
* it's considered to be an empty string.
- *
- * Returns 0 on success, -1 on error (when attempting to pass multiple FDs) using
- * the 'direct' method.
*/
-int
+void
qemuFDPassAddFD(qemuFDPass *fdpass,
int *fd,
const char *suffix)
{
struct qemuFDPassFD newfd = { .fd = *fd };
- if (newfd.fd < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("invalid file descriptor"));
- return -1;
- }
-
- if (!fdpass->useFDSet &&
- fdpass->nfds >= 1) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("direct FD passing supports only 1 file descriptor"));
- return -1;
- }
-
*fd = -1;
newfd.opaque = g_strdup_printf("%s%s", fdpass->prefix, NULLSTR_EMPTY(suffix));
VIR_APPEND_ELEMENT(fdpass->fds, fdpass->nfds, newfd);
-
- return 0;
}
qemuFDPassNewDirect(const char *prefix,
void *dompriv);
-int
+void
qemuFDPassAddFD(qemuFDPass *fdpass,
int *fd,
const char *suffix);
charpriv->sourcefd = qemuFDPassNew(devalias, data->priv);
- if (qemuFDPassAddFD(charpriv->sourcefd, &sourcefd, "-source") < 0)
- return -1;
+ qemuFDPassAddFD(charpriv->sourcefd, &sourcefd, "-source");
}
break;
charpriv->sourcefd = qemuFDPassNewDirect(devalias, data->priv);
- if (qemuFDPassAddFD(charpriv->sourcefd, &sourcefd, "-source") < 0)
- return -1;
+ qemuFDPassAddFD(charpriv->sourcefd, &sourcefd, "-source");
}
break;
charpriv->logfd = qemuFDPassNew(devalias, data->priv);
- if (qemuFDPassAddFD(charpriv->logfd, &logfd, "-log") < 0)
- return -1;
+ qemuFDPassAddFD(charpriv->logfd, &logfd, "-log");
}
return 0;
else
charpriv->sourcefd = qemuFDPassNewDirect(devalias, priv);
- if (qemuFDPassAddFD(charpriv->sourcefd, &fakesourcefd, "-source") < 0)
- return -1;
+ qemuFDPassAddFD(charpriv->sourcefd, &fakesourcefd, "-source");
}
if (chardev->logfile) {
charpriv->logfd = qemuFDPassNew(devalias, priv);
- if (qemuFDPassAddFD(charpriv->logfd, &fd, "-log") < 0)
- return -1;
+ qemuFDPassAddFD(charpriv->logfd, &fd, "-log");
}
return 0;