mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
driver: ensure NULL URI isn't passed to drivers with whitelisted URIs
Ensuring that we don't call the virDrvConnectOpen method with a NULL URI means that the drivers can drop various checks for NULL URIs. These were not needed anymore since the probe functionality was split Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
8e4f9a2773
commit
4c8574c85c
@ -199,21 +199,17 @@ bhyveConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (STRNEQ_NULLABLE(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unexpected bhyve URI path '%s', try bhyve:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
if (STRNEQ_NULLABLE(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unexpected bhyve URI path '%s', try bhyve:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (bhyve_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("bhyve state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
if (bhyve_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("bhyve state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (virConnectOpenEnsureACL(conn) < 0)
|
||||
|
@ -851,10 +851,6 @@ esxConnectOpen(virConnectPtr conn, virConnectAuthPtr auth,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Decline if the URI is NULL or the scheme is NULL */
|
||||
if (!conn->uri)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
if (STRCASENEQ(conn->uri->scheme, "vpx") &&
|
||||
conn->uri->path && STRNEQ(conn->uri->path, "/")) {
|
||||
VIR_WARN("Ignoring unexpected path '%s' for non-vpx scheme '%s'",
|
||||
|
@ -128,10 +128,6 @@ hypervConnectOpen(virConnectPtr conn, virConnectAuthPtr auth,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Decline if the URI is NULL or the scheme is NULL */
|
||||
if (conn->uri == NULL)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
/* Require server part */
|
||||
if (conn->uri->server == NULL) {
|
||||
virReportError(VIR_ERR_INVALID_ARG, "%s",
|
||||
|
@ -159,31 +159,25 @@ netcfConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("interface state driver is not active"));
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("interface state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1203,31 +1203,25 @@ udevConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("interface state driver is not active"));
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("interface state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected interface URI path '%s', try interface:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1074,9 +1074,13 @@ virConnectOpenInternal(const char *name,
|
||||
}
|
||||
|
||||
/* Filter drivers based on declared URI schemes */
|
||||
if (virConnectDriverTab[i]->uriSchemes && ret->uri) {
|
||||
if (virConnectDriverTab[i]->uriSchemes) {
|
||||
bool matchScheme = false;
|
||||
size_t s;
|
||||
if (!ret->uri) {
|
||||
VIR_DEBUG("No URI, skipping driver with URI whitelist");
|
||||
continue;
|
||||
}
|
||||
if (!ret->uri->scheme) {
|
||||
VIR_DEBUG("No URI scheme, skipping driver with URI whitelist");
|
||||
continue;
|
||||
|
@ -845,26 +845,22 @@ libxlConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
/* Error if xen or libxl scheme specified but driver not started. */
|
||||
if (libxl_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("libxenlight state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
/* Error if xen or libxl scheme specified but driver not started. */
|
||||
if (libxl_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("libxenlight state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
/* /session isn't supported in libxenlight */
|
||||
if (conn->uri->path &&
|
||||
STRNEQ(conn->uri->path, "") &&
|
||||
STRNEQ(conn->uri->path, "/") &&
|
||||
STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected Xen URI path '%s', try xen:///system"),
|
||||
NULLSTR(conn->uri->path));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
/* /session isn't supported in libxenlight */
|
||||
if (conn->uri->path &&
|
||||
STRNEQ(conn->uri->path, "") &&
|
||||
STRNEQ(conn->uri->path, "/") &&
|
||||
STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected Xen URI path '%s', try xen:///system"),
|
||||
NULLSTR(conn->uri->path));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (virConnectOpenEnsureACL(conn) < 0)
|
||||
|
@ -169,26 +169,21 @@ static virDrvOpenStatus lxcConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
/* If path isn't '/' then they typoed, tell them correct path */
|
||||
if (conn->uri->path != NULL &&
|
||||
STRNEQ(conn->uri->path, "/") &&
|
||||
STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unexpected LXC URI path '%s', try lxc:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
/* If path isn't '/' then they typoed, tell them correct path */
|
||||
if (conn->uri->path != NULL &&
|
||||
STRNEQ(conn->uri->path, "/") &&
|
||||
STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Unexpected LXC URI path '%s', try lxc:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
/* URI was good, but driver isn't active */
|
||||
if (lxc_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("lxc state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
/* URI was good, but driver isn't active */
|
||||
if (lxc_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("lxc state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (virConnectOpenEnsureACL(conn) < 0)
|
||||
|
@ -878,31 +878,25 @@ networkConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (network_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("network state driver is not active"));
|
||||
if (network_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("network state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (network_driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected network URI path '%s', try network:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (network_driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected network URI path '%s', try network:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected network URI path '%s', try network:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected network URI path '%s', try network:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,31 +54,25 @@ nodeConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("nodedev state driver is not active"));
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("nodedev state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected nodedev URI path '%s', try nodedev:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected nodedev URI path '%s', try nodedev:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected nodedev URI path '%s', try nodedev:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected nodedev URI path '%s', try nodedev:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -371,23 +371,17 @@ nwfilterConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("nwfilter state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("nwfilter state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected nwfilter URI path '%s', try nwfilter:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected nwfilter URI path '%s', try nwfilter:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (virConnectOpenEnsureACL(conn) < 0)
|
||||
|
@ -1354,29 +1354,25 @@ static virDrvOpenStatus openvzConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
/* If path isn't /system, then they typoed, so tell them correct path */
|
||||
if (conn->uri->path == NULL ||
|
||||
STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected OpenVZ URI path '%s', try openvz:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
/* If path isn't /system, then they typoed, so tell them correct path */
|
||||
if (conn->uri->path == NULL ||
|
||||
STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected OpenVZ URI path '%s', try openvz:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (!virFileExists("/proc/vz")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("OpenVZ control file /proc/vz does not exist"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
if (!virFileExists("/proc/vz")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("OpenVZ control file /proc/vz does not exist"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (access("/proc/vz", W_OK) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("OpenVZ control file /proc/vz is not accessible"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
if (access("/proc/vz", W_OK) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("OpenVZ control file /proc/vz is not accessible"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
/* We now know the URI is definitely for this driver, so beyond
|
||||
|
@ -1141,9 +1141,6 @@ phypConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (!conn || !conn->uri)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
if (conn->uri->server == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("Missing server name in phyp:// URI"));
|
||||
|
@ -1143,38 +1143,34 @@ static virDrvOpenStatus qemuConnectOpen(virConnectPtr conn,
|
||||
virDrvOpenStatus ret = VIR_DRV_OPEN_ERROR;
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (qemu_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("qemu state driver is not active"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (qemu_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("qemu state driver is not active"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cfg = virQEMUDriverGetConfig(qemu_driver);
|
||||
if (conn->uri->path == NULL) {
|
||||
cfg = virQEMUDriverGetConfig(qemu_driver);
|
||||
if (conn->uri->path == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("no QEMU URI path given, try %s"),
|
||||
cfg->uri);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virQEMUDriverIsPrivileged(qemu_driver)) {
|
||||
if (STRNEQ(conn->uri->path, "/system") &&
|
||||
STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("no QEMU URI path given, try %s"),
|
||||
cfg->uri);
|
||||
_("unexpected QEMU URI path '%s', try qemu:///system"),
|
||||
conn->uri->path);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virQEMUDriverIsPrivileged(qemu_driver)) {
|
||||
if (STRNEQ(conn->uri->path, "/system") &&
|
||||
STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected QEMU URI path '%s', try qemu:///system"),
|
||||
conn->uri->path);
|
||||
goto cleanup;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected QEMU URI path '%s', try qemu:///session"),
|
||||
conn->uri->path);
|
||||
goto cleanup;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected QEMU URI path '%s', try qemu:///session"),
|
||||
conn->uri->path);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -524,31 +524,25 @@ secretConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("secret state driver is not active"));
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("secret state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected secret URI path '%s', try secret:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected secret URI path '%s', try secret:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected secret URI path '%s', try secret:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected secret URI path '%s', try secret:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -384,31 +384,25 @@ storageConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
/* Verify uri was specified */
|
||||
if (conn->uri == NULL) {
|
||||
/* Only hypervisor drivers are permitted to auto-open on NULL uri */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("storage state driver is not active"));
|
||||
if (driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("storage state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected storage URI path '%s', try storage:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected storage URI path '%s', try storage:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected storage URI path '%s', try storage:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected storage URI path '%s', try storage:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1454,10 +1454,6 @@ testConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (!conn->uri)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
/* From this point on, the connection is for us. */
|
||||
if (!conn->uri->path
|
||||
|| conn->uri->path[0] == '\0'
|
||||
|| (conn->uri->path[0] == '/' && conn->uri->path[1] == '\0')) {
|
||||
|
@ -1203,33 +1203,29 @@ static virDrvOpenStatus umlConnectOpen(virConnectPtr conn,
|
||||
{
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
/* Check path and tell them correct path if they made a mistake */
|
||||
if (uml_driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system") &&
|
||||
STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected UML URI path '%s', try uml:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected UML URI path '%s', try uml:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/* URI was good, but driver isn't active */
|
||||
if (uml_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("uml state driver is not active"));
|
||||
/* Check path and tell them correct path if they made a mistake */
|
||||
if (uml_driver->privileged) {
|
||||
if (STRNEQ(conn->uri->path, "/system") &&
|
||||
STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected UML URI path '%s', try uml:///system"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
if (STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected UML URI path '%s', try uml:///session"),
|
||||
conn->uri->path);
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/* URI was good, but driver isn't active */
|
||||
if (uml_driver == NULL) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("uml state driver is not active"));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
if (virConnectOpenEnsureACL(conn) < 0)
|
||||
|
@ -517,9 +517,6 @@ vboxConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
if (conn->uri->path == NULL || STREQ(conn->uri->path, "")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("no VirtualBox driver path specified (try vbox:///session)"));
|
||||
|
@ -58,9 +58,6 @@ static virDrvOpenStatus dummyConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
if (conn->uri->path == NULL || STREQ(conn->uri->path, "")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("no VirtualBox driver path specified (try vbox:///session)"));
|
||||
|
@ -130,17 +130,12 @@ vmwareConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL) {
|
||||
/* @TODO accept */
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
} else {
|
||||
/* If path isn't /session, then they typoed, so tell them correct path */
|
||||
if (conn->uri->path == NULL || STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected VMware URI path '%s', try vmwareplayer:///session, vmwarews:///session or vmwarefusion:///session"),
|
||||
NULLSTR(conn->uri->path));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
/* If path isn't /session, then they typoed, so tell them correct path */
|
||||
if (conn->uri->path == NULL || STRNEQ(conn->uri->path, "/session")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected VMware URI path '%s', try vmwareplayer:///session, vmwarews:///session or vmwarefusion:///session"),
|
||||
NULLSTR(conn->uri->path));
|
||||
return VIR_DRV_OPEN_ERROR;
|
||||
}
|
||||
|
||||
/* We now know the URI is definitely for this driver, so beyond
|
||||
|
@ -358,9 +358,6 @@ vzConnectOpen(virConnectPtr conn,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (!conn->uri)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
/* From this point on, the connection is for us. */
|
||||
if (STRNEQ_NULLABLE(conn->uri->path, "/system")) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
|
@ -146,9 +146,6 @@ xenapiConnectOpen(virConnectPtr conn, virConnectAuthPtr auth,
|
||||
|
||||
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||
|
||||
if (conn->uri == NULL)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
|
||||
if (conn->uri->server == NULL) {
|
||||
xenapiSessionErrorHandler(conn, VIR_ERR_INVALID_ARG,
|
||||
_("Server name not in URI"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user