security_driver.h 6.0 KB
Newer Older
1
/*
2
 * Copyright (C) 2008, 2010 Red Hat, Inc.
3 4 5 6 7 8 9 10 11 12 13
 *
 * 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.
 *
 * Authors:
 *     James Morris <jmorris@namei.org>
 *
 */
#ifndef __VIR_SECURITY_H__
14
# define __VIR_SECURITY_H__
15

16 17
# include "internal.h"
# include "domain_conf.h"
18

19 20
# include "security_manager.h"

21 22 23 24 25 26 27 28 29 30 31 32
/*
 * Return values for security driver probing: the driver will determine
 * whether it should be enabled or disabled.
 */
typedef enum {
    SECURITY_DRIVER_ENABLE      = 0,
    SECURITY_DRIVER_ERROR       = -1,
    SECURITY_DRIVER_DISABLE     = -2,
} virSecurityDriverStatus;

typedef struct _virSecurityDriver virSecurityDriver;
typedef virSecurityDriver *virSecurityDriverPtr;
33

34
typedef virSecurityDriverStatus (*virSecurityDriverProbe) (void);
35 36 37 38 39 40 41
typedef int (*virSecurityDriverOpen) (virSecurityManagerPtr mgr);
typedef int (*virSecurityDriverClose) (virSecurityManagerPtr mgr);

typedef const char *(*virSecurityDriverGetModel) (virSecurityManagerPtr mgr);
typedef const char *(*virSecurityDriverGetDOI) (virSecurityManagerPtr mgr);

typedef int (*virSecurityDomainRestoreImageLabel) (virSecurityManagerPtr mgr,
42
                                                   virDomainObjPtr vm,
43
                                                   virDomainDiskDefPtr disk);
44 45
typedef int (*virSecurityDomainSetDaemonSocketLabel)(virSecurityManagerPtr mgr,
                                                     virDomainObjPtr vm);
46 47
typedef int (*virSecurityDomainSetSocketLabel) (virSecurityManagerPtr mgr,
                                                virDomainObjPtr vm);
48
typedef int (*virSecurityDomainClearSocketLabel)(virSecurityManagerPtr mgr,
49
                                                virDomainObjPtr vm);
50
typedef int (*virSecurityDomainSetImageLabel) (virSecurityManagerPtr mgr,
51
                                               virDomainObjPtr vm,
52
                                               virDomainDiskDefPtr disk);
53
typedef int (*virSecurityDomainRestoreHostdevLabel) (virSecurityManagerPtr mgr,
54
                                                     virDomainObjPtr vm,
55
                                                     virDomainHostdevDefPtr dev);
56
typedef int (*virSecurityDomainSetHostdevLabel) (virSecurityManagerPtr mgr,
57
                                                 virDomainObjPtr vm,
58
                                                 virDomainHostdevDefPtr dev);
59
typedef int (*virSecurityDomainSetSavedStateLabel) (virSecurityManagerPtr mgr,
60
                                                    virDomainObjPtr vm,
61
                                                    const char *savefile);
62
typedef int (*virSecurityDomainRestoreSavedStateLabel) (virSecurityManagerPtr mgr,
63
                                                        virDomainObjPtr vm,
64
                                                        const char *savefile);
65
typedef int (*virSecurityDomainGenLabel) (virSecurityManagerPtr mgr,
66
                                          virDomainObjPtr sec);
67
typedef int (*virSecurityDomainReserveLabel) (virSecurityManagerPtr mgr,
68
                                              virDomainObjPtr sec);
69
typedef int (*virSecurityDomainReleaseLabel) (virSecurityManagerPtr mgr,
70
                                              virDomainObjPtr sec);
71
typedef int (*virSecurityDomainSetAllLabel) (virSecurityManagerPtr mgr,
72
                                             virDomainObjPtr sec,
73
                                             const char *stdin_path);
74
typedef int (*virSecurityDomainRestoreAllLabel) (virSecurityManagerPtr mgr,
75
                                                 virDomainObjPtr vm,
76
                                                 int migrated);
77
typedef int (*virSecurityDomainGetProcessLabel) (virSecurityManagerPtr mgr,
78
                                                 virDomainObjPtr vm,
79
                                                 virSecurityLabelPtr sec);
80
typedef int (*virSecurityDomainSetProcessLabel) (virSecurityManagerPtr mgr,
81
                                                 virDomainObjPtr vm);
82 83
typedef int (*virSecurityDomainSecurityVerify) (virSecurityManagerPtr mgr,
                                                virDomainDefPtr def);
84 85 86
typedef int (*virSecurityDomainSetImageFDLabel) (virSecurityManagerPtr mgr,
                                                 virDomainObjPtr vm,
                                                 int fd);
87 88

struct _virSecurityDriver {
89
    size_t privateDataLen;
90 91 92
    const char *name;
    virSecurityDriverProbe probe;
    virSecurityDriverOpen open;
93 94 95 96 97
    virSecurityDriverClose close;

    virSecurityDriverGetModel getModel;
    virSecurityDriverGetDOI getDOI;

98
    virSecurityDomainSecurityVerify domainSecurityVerify;
99 100

    virSecurityDomainSetImageLabel domainSetSecurityImageLabel;
101
    virSecurityDomainRestoreImageLabel domainRestoreSecurityImageLabel;
102

103
    virSecurityDomainSetDaemonSocketLabel domainSetSecurityDaemonSocketLabel;
104
    virSecurityDomainSetSocketLabel domainSetSecuritySocketLabel;
105
    virSecurityDomainClearSocketLabel domainClearSecuritySocketLabel;
106

107
    virSecurityDomainGenLabel domainGenSecurityLabel;
108
    virSecurityDomainReserveLabel domainReserveSecurityLabel;
109
    virSecurityDomainReleaseLabel domainReleaseSecurityLabel;
110

111 112
    virSecurityDomainGetProcessLabel domainGetSecurityProcessLabel;
    virSecurityDomainSetProcessLabel domainSetSecurityProcessLabel;
113

114 115
    virSecurityDomainSetAllLabel domainSetSecurityAllLabel;
    virSecurityDomainRestoreAllLabel domainRestoreSecurityAllLabel;
116

117
    virSecurityDomainSetHostdevLabel domainSetSecurityHostdevLabel;
118 119
    virSecurityDomainRestoreHostdevLabel domainRestoreSecurityHostdevLabel;

120 121
    virSecurityDomainSetSavedStateLabel domainSetSavedStateLabel;
    virSecurityDomainRestoreSavedStateLabel domainRestoreSavedStateLabel;
122

123
    virSecurityDomainSetImageFDLabel domainSetSecurityImageFDLabel;
124 125
};

126
virSecurityDriverPtr virSecurityDriverLookup(const char *name);
127 128

#endif /* __VIR_SECURITY_H__ */