~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to xen/include/public/xsm/acm_ops.h

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * acm_ops.h: Xen access control module hypervisor commands
 
3
 *
 
4
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 
5
 * of this software and associated documentation files (the "Software"), to
 
6
 * deal in the Software without restriction, including without limitation the
 
7
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
8
 * sell copies of the Software, and to permit persons to whom the Software is
 
9
 * furnished to do so, subject to the following conditions:
 
10
 *
 
11
 * The above copyright notice and this permission notice shall be included in
 
12
 * all copies or substantial portions of the Software.
 
13
 *
 
14
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
15
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
16
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 
17
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
18
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
19
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 
20
 * DEALINGS IN THE SOFTWARE.
 
21
 *
 
22
 * Reiner Sailer <sailer@watson.ibm.com>
 
23
 * Copyright (c) 2005,2006 International Business Machines Corporation.
 
24
 */
 
25
 
 
26
#ifndef __XEN_PUBLIC_ACM_OPS_H__
 
27
#define __XEN_PUBLIC_ACM_OPS_H__
 
28
 
 
29
#include "../xen.h"
 
30
#include "acm.h"
 
31
 
 
32
/*
 
33
 * Make sure you increment the interface version whenever you modify this file!
 
34
 * This makes sure that old versions of acm tools will stop working in a
 
35
 * well-defined way (rather than crashing the machine, for instance).
 
36
 */
 
37
#define ACM_INTERFACE_VERSION   0xAAAA000A
 
38
 
 
39
/************************************************************************/
 
40
 
 
41
/*
 
42
 * Prototype for this hypercall is:
 
43
 *  int acm_op(int cmd, void *args)
 
44
 * @cmd  == ACMOP_??? (access control module operation).
 
45
 * @args == Operation-specific extra arguments (NULL if none).
 
46
 */
 
47
 
 
48
 
 
49
#define ACMOP_setpolicy         1
 
50
struct acm_setpolicy {
 
51
    /* IN */
 
52
    XEN_GUEST_HANDLE_64(void) pushcache;
 
53
    uint32_t pushcache_size;
 
54
};
 
55
 
 
56
 
 
57
#define ACMOP_getpolicy         2
 
58
struct acm_getpolicy {
 
59
    /* IN */
 
60
    XEN_GUEST_HANDLE_64(void) pullcache;
 
61
    uint32_t pullcache_size;
 
62
};
 
63
 
 
64
 
 
65
#define ACMOP_dumpstats         3
 
66
struct acm_dumpstats {
 
67
    /* IN */
 
68
    XEN_GUEST_HANDLE_64(void) pullcache;
 
69
    uint32_t pullcache_size;
 
70
};
 
71
 
 
72
 
 
73
#define ACMOP_getssid           4
 
74
#define ACM_GETBY_ssidref  1
 
75
#define ACM_GETBY_domainid 2
 
76
struct acm_getssid {
 
77
    /* IN */
 
78
    uint32_t get_ssid_by; /* ACM_GETBY_* */
 
79
    union {
 
80
        domaintype_t domainid;
 
81
        ssidref_t    ssidref;
 
82
    } id;
 
83
    XEN_GUEST_HANDLE_64(void) ssidbuf;
 
84
    uint32_t ssidbuf_size;
 
85
};
 
86
 
 
87
#define ACMOP_getdecision      5
 
88
struct acm_getdecision {
 
89
    /* IN */
 
90
    uint32_t get_decision_by1; /* ACM_GETBY_* */
 
91
    uint32_t get_decision_by2; /* ACM_GETBY_* */
 
92
    union {
 
93
        domaintype_t domainid;
 
94
        ssidref_t    ssidref;
 
95
    } id1;
 
96
    union {
 
97
        domaintype_t domainid;
 
98
        ssidref_t    ssidref;
 
99
    } id2;
 
100
    uint32_t hook;
 
101
    /* OUT */
 
102
    uint32_t acm_decision;
 
103
};
 
104
 
 
105
 
 
106
#define ACMOP_chgpolicy        6
 
107
struct acm_change_policy {
 
108
    /* IN */
 
109
    XEN_GUEST_HANDLE_64(void) policy_pushcache;
 
110
    uint32_t policy_pushcache_size;
 
111
    XEN_GUEST_HANDLE_64(void) del_array;
 
112
    uint32_t delarray_size;
 
113
    XEN_GUEST_HANDLE_64(void) chg_array;
 
114
    uint32_t chgarray_size;
 
115
    /* OUT */
 
116
    /* array with error code */
 
117
    XEN_GUEST_HANDLE_64(void) err_array;
 
118
    uint32_t errarray_size;
 
119
};
 
120
 
 
121
#define ACMOP_relabeldoms       7
 
122
struct acm_relabel_doms {
 
123
    /* IN */
 
124
    XEN_GUEST_HANDLE_64(void) relabel_map;
 
125
    uint32_t relabel_map_size;
 
126
    /* OUT */
 
127
    XEN_GUEST_HANDLE_64(void) err_array;
 
128
    uint32_t errarray_size;
 
129
};
 
130
 
 
131
/* future interface to Xen */
 
132
struct xen_acmctl {
 
133
    uint32_t cmd;
 
134
    uint32_t interface_version;
 
135
    union {
 
136
        struct acm_setpolicy     setpolicy;
 
137
        struct acm_getpolicy     getpolicy;
 
138
        struct acm_dumpstats     dumpstats;
 
139
        struct acm_getssid       getssid;
 
140
        struct acm_getdecision   getdecision;
 
141
        struct acm_change_policy change_policy;
 
142
        struct acm_relabel_doms  relabel_doms;
 
143
    } u;
 
144
};
 
145
 
 
146
typedef struct xen_acmctl xen_acmctl_t;
 
147
DEFINE_XEN_GUEST_HANDLE(xen_acmctl_t);
 
148
 
 
149
#endif /* __XEN_PUBLIC_ACM_OPS_H__ */
 
150
 
 
151
/*
 
152
 * Local variables:
 
153
 * mode: C
 
154
 * c-set-style: "BSD"
 
155
 * c-basic-offset: 4
 
156
 * tab-width: 4
 
157
 * indent-tabs-mode: nil
 
158
 * End:
 
159
 */