driver.h 4.4 KB
Newer Older
1
/*
2
 * driver.h: description of the set of interfaces provided by a
3
 *           entry point to the virtualization engine
E
Eric Blake 已提交
4
 *
5
 * Copyright (C) 2006-2014 Red Hat, Inc.
E
Eric Blake 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19
 *
 * 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/>.
20 21 22
 */

#ifndef __VIR_DRIVER_H__
23
# define __VIR_DRIVER_H__
24

25
# include <unistd.h>
26

27
# include "internal.h"
28
# include "libvirt_internal.h"
M
Martin Kletzander 已提交
29
# include "viruri.h"
30 31


32 33 34 35 36 37 38 39 40 41 42 43 44 45
/* 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;

D
Daniel Veillard 已提交
46

47
/* Internal feature-detection macro.  Don't call drv->supports_feature
48 49
 * directly if you don't have to, because it may be NULL, use this macro
 * instead.
50
 *
51 52 53
 * Note that this treats a possible error returned by drv->supports_feature
 * the same as not supported. If you care about the error, call
 * drv->supports_feature directly.
54 55
 *
 * Returns:
56
 *   != 0  Feature is supported.
57 58
 *   0     Feature is not supported.
 */
59 60
# define VIR_DRV_SUPPORTS_FEATURE(drv, conn, feature) \
    ((drv)->connectSupportsFeature ? \
61
        (drv)->connectSupportsFeature((conn), (feature)) > 0 : 0)
62

63

64
# define __VIR_DRIVER_H_INCLUDES___
65

66 67 68 69 70 71
# include "driver-hypervisor.h"
# include "driver-interface.h"
# include "driver-network.h"
# include "driver-nodedev.h"
# include "driver-nwfilter.h"
# include "driver-secret.h"
72
# include "driver-state.h"
73 74
# include "driver-stream.h"
# include "driver-storage.h"
75

76
# undef __VIR_DRIVER_H_INCLUDES___
77

78 79 80 81
typedef struct _virConnectDriver virConnectDriver;
typedef virConnectDriver *virConnectDriverPtr;

struct _virConnectDriver {
82 83
    /* Wether driver permits a server in the URI */
    bool localOnly;
84 85
    /* Wether driver needs a server in the URI */
    bool remoteOnly;
86 87 88 89 90 91
    /*
     * NULL terminated list of supported URI schemes.
     *  - Single element { NULL } list indicates no supported schemes
     *  - NULL list indicates wildcard supportnig all schemes
     */
    const char **uriSchemes;
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
    virHypervisorDriverPtr hypervisorDriver;
    virInterfaceDriverPtr interfaceDriver;
    virNetworkDriverPtr networkDriver;
    virNodeDeviceDriverPtr nodeDeviceDriver;
    virNWFilterDriverPtr nwfilterDriver;
    virSecretDriverPtr secretDriver;
    virStorageDriverPtr storageDriver;
};

int virRegisterConnectDriver(virConnectDriverPtr driver,
                             bool setSharedDrivers) ATTRIBUTE_RETURN_CHECK;
int virRegisterStateDriver(virStateDriverPtr driver) ATTRIBUTE_RETURN_CHECK;

int virSetSharedInterfaceDriver(virInterfaceDriverPtr driver) ATTRIBUTE_RETURN_CHECK;
int virSetSharedNetworkDriver(virNetworkDriverPtr driver) ATTRIBUTE_RETURN_CHECK;
int virSetSharedNodeDeviceDriver(virNodeDeviceDriverPtr driver) ATTRIBUTE_RETURN_CHECK;
int virSetSharedNWFilterDriver(virNWFilterDriverPtr driver) ATTRIBUTE_RETURN_CHECK;
int virSetSharedSecretDriver(virSecretDriverPtr driver) ATTRIBUTE_RETURN_CHECK;
int virSetSharedStorageDriver(virStorageDriverPtr driver) ATTRIBUTE_RETURN_CHECK;
111

112
int virDriverLoadModule(const char *name,
113 114
                        const char *regfunc,
                        bool required);
115

116 117 118 119 120 121 122
virConnectPtr virGetConnectInterface(void);
virConnectPtr virGetConnectNetwork(void);
virConnectPtr virGetConnectNWFilter(void);
virConnectPtr virGetConnectNodeDev(void);
virConnectPtr virGetConnectSecret(void);
virConnectPtr virGetConnectStorage(void);

123 124 125 126 127 128 129
int virSetConnectInterface(virConnectPtr conn);
int virSetConnectNetwork(virConnectPtr conn);
int virSetConnectNWFilter(virConnectPtr conn);
int virSetConnectNodeDev(virConnectPtr conn);
int virSetConnectSecret(virConnectPtr conn);
int virSetConnectStorage(virConnectPtr conn);

130
#endif /* __VIR_DRIVER_H__ */