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