mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-31 18:33:11 +00:00
3e883cf07e
Otherwise we can get misleading error messages. One example is when connection is broken we got "this function is not supported by the connection driver: virDomainMigrate3" from virDomainMigrate3. Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
136 lines
4.6 KiB
C
136 lines
4.6 KiB
C
/*
|
|
* driver.h: description of the set of interfaces provided by a
|
|
* entry point to the virtualization engine
|
|
*
|
|
* Copyright (C) 2006-2014 Red Hat, Inc.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <unistd.h>
|
|
|
|
#include "internal.h"
|
|
#include "libvirt_internal.h"
|
|
#include "viruri.h"
|
|
|
|
|
|
/* Status codes returned from driver open call. */
|
|
typedef enum {
|
|
/* Opened successfully. */
|
|
VIR_DRV_OPEN_SUCCESS = 0,
|
|
|
|
/* 'name' is not for us. */
|
|
VIR_DRV_OPEN_DECLINED = -1,
|
|
|
|
/* 'name' is for us, but there was some error. virConnectOpen will
|
|
* return an error rather than continue probing the other drivers.
|
|
*/
|
|
VIR_DRV_OPEN_ERROR = -2,
|
|
} virDrvOpenStatus;
|
|
|
|
|
|
/* Internal feature-detection macro. Don't call drv->supports_feature
|
|
* directly if you don't have to, because it may be NULL, use this macro
|
|
* instead.
|
|
*
|
|
* Returns:
|
|
* -1 Error
|
|
* >0 Feature is supported.
|
|
* 0 Feature is not supported.
|
|
*/
|
|
#define VIR_DRV_SUPPORTS_FEATURE(drv, conn, feature) \
|
|
((drv)->connectSupportsFeature ? \
|
|
(drv)->connectSupportsFeature((conn), (feature)) : 0)
|
|
|
|
|
|
#define __VIR_DRIVER_H_INCLUDES___
|
|
|
|
#include "driver-hypervisor.h"
|
|
#include "driver-interface.h"
|
|
#include "driver-network.h"
|
|
#include "driver-nodedev.h"
|
|
#include "driver-nwfilter.h"
|
|
#include "driver-secret.h"
|
|
#include "driver-state.h"
|
|
#include "driver-stream.h"
|
|
#include "driver-storage.h"
|
|
|
|
#undef __VIR_DRIVER_H_INCLUDES___
|
|
|
|
typedef struct _virConnectDriver virConnectDriver;
|
|
typedef virConnectDriver *virConnectDriverPtr;
|
|
|
|
struct _virConnectDriver {
|
|
/* Whether driver permits a server in the URI */
|
|
bool localOnly;
|
|
/* Whether driver needs a server in the URI */
|
|
bool remoteOnly;
|
|
/* Whether driver can be used in embedded mode */
|
|
bool embeddable;
|
|
/*
|
|
* NULL terminated list of supported URI schemes.
|
|
* - Single element { NULL } list indicates no supported schemes
|
|
* - NULL list indicates wildcard supporting all schemes
|
|
*/
|
|
const char **uriSchemes;
|
|
virHypervisorDriverPtr hypervisorDriver;
|
|
virInterfaceDriverPtr interfaceDriver;
|
|
virNetworkDriverPtr networkDriver;
|
|
virNodeDeviceDriverPtr nodeDeviceDriver;
|
|
virNWFilterDriverPtr nwfilterDriver;
|
|
virSecretDriverPtr secretDriver;
|
|
virStorageDriverPtr storageDriver;
|
|
};
|
|
|
|
int virRegisterConnectDriver(virConnectDriverPtr driver,
|
|
bool setSharedDrivers) G_GNUC_WARN_UNUSED_RESULT;
|
|
int virRegisterStateDriver(virStateDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
|
|
int virSetSharedInterfaceDriver(virInterfaceDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
int virSetSharedNetworkDriver(virNetworkDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
int virSetSharedNodeDeviceDriver(virNodeDeviceDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
int virSetSharedNWFilterDriver(virNWFilterDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
int virSetSharedSecretDriver(virSecretDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
int virSetSharedStorageDriver(virStorageDriverPtr driver) G_GNUC_WARN_UNUSED_RESULT;
|
|
|
|
bool virHasDriverForURIScheme(const char *scheme);
|
|
|
|
int virDriverLoadModule(const char *name,
|
|
const char *regfunc,
|
|
bool required);
|
|
|
|
int virDriverShouldAutostart(const char *name,
|
|
bool *autostart);
|
|
|
|
virConnectPtr virGetConnectInterface(void);
|
|
virConnectPtr virGetConnectNetwork(void);
|
|
virConnectPtr virGetConnectNWFilter(void);
|
|
virConnectPtr virGetConnectNodeDev(void);
|
|
virConnectPtr virGetConnectSecret(void);
|
|
virConnectPtr virGetConnectStorage(void);
|
|
|
|
int virSetConnectInterface(virConnectPtr conn);
|
|
int virSetConnectNetwork(virConnectPtr conn);
|
|
int virSetConnectNWFilter(virConnectPtr conn);
|
|
int virSetConnectNodeDev(virConnectPtr conn);
|
|
int virSetConnectSecret(virConnectPtr conn);
|
|
int virSetConnectStorage(virConnectPtr conn);
|
|
|
|
bool virConnectValidateURIPath(const char *uriPath,
|
|
const char *entityName,
|
|
bool privileged);
|