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