1/************************************************************
2
3Author: Eamon Walsh <ewalsh@tycho.nsa.gov>
4
5Permission to use, copy, modify, distribute, and sell this software and its
6documentation for any purpose is hereby granted without fee, provided that
7this permission notice appear in supporting documentation.  This permission
8notice shall be included in all copies or substantial portions of the
9Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
14AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
15AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17
18********************************************************/
19
20#ifndef _XSELINUX_H
21#define _XSELINUX_H
22
23/* Extension info */
24#define SELINUX_EXTENSION_NAME		"SELinux"
25#define SELINUX_MAJOR_VERSION		1
26#define SELINUX_MINOR_VERSION		1
27#define SELinuxNumberEvents		0
28#define SELinuxNumberErrors		0
29
30/* Extension protocol */
31#define X_SELinuxQueryVersion			0
32#define X_SELinuxSetDeviceCreateContext		1
33#define X_SELinuxGetDeviceCreateContext		2
34#define X_SELinuxSetDeviceContext		3
35#define X_SELinuxGetDeviceContext		4
36#define X_SELinuxSetDrawableCreateContext	5
37#define X_SELinuxGetDrawableCreateContext	6
38#define X_SELinuxGetDrawableContext		7
39#define X_SELinuxSetPropertyCreateContext	8
40#define X_SELinuxGetPropertyCreateContext	9
41#define X_SELinuxSetPropertyUseContext		10
42#define X_SELinuxGetPropertyUseContext		11
43#define X_SELinuxGetPropertyContext		12
44#define X_SELinuxGetPropertyDataContext		13
45#define X_SELinuxListProperties			14
46#define X_SELinuxSetSelectionCreateContext	15
47#define X_SELinuxGetSelectionCreateContext	16
48#define X_SELinuxSetSelectionUseContext		17
49#define X_SELinuxGetSelectionUseContext		18
50#define X_SELinuxGetSelectionContext		19
51#define X_SELinuxGetSelectionDataContext	20
52#define X_SELinuxListSelections			21
53#define X_SELinuxGetClientContext		22
54
55typedef struct {
56    CARD8 reqType;
57    CARD8 SELinuxReqType;
58    CARD16 length;
59    CARD8 client_major;
60    CARD8 client_minor;
61} SELinuxQueryVersionReq;
62
63typedef struct {
64    CARD8 type;
65    CARD8 pad1;
66    CARD16 sequenceNumber;
67    CARD32 length;
68    CARD16 server_major;
69    CARD16 server_minor;
70    CARD32 pad2;
71    CARD32 pad3;
72    CARD32 pad4;
73    CARD32 pad5;
74    CARD32 pad6;
75} SELinuxQueryVersionReply;
76
77typedef struct {
78    CARD8 reqType;
79    CARD8 SELinuxReqType;
80    CARD16 length;
81    CARD32 context_len;
82} SELinuxSetCreateContextReq;
83
84typedef struct {
85    CARD8 reqType;
86    CARD8 SELinuxReqType;
87    CARD16 length;
88} SELinuxGetCreateContextReq;
89
90typedef struct {
91    CARD8 reqType;
92    CARD8 SELinuxReqType;
93    CARD16 length;
94    CARD32 id;
95    CARD32 context_len;
96} SELinuxSetContextReq;
97
98typedef struct {
99    CARD8 reqType;
100    CARD8 SELinuxReqType;
101    CARD16 length;
102    CARD32 id;
103} SELinuxGetContextReq;
104
105typedef struct {
106    CARD8 reqType;
107    CARD8 SELinuxReqType;
108    CARD16 length;
109    CARD32 window;
110    CARD32 property;
111} SELinuxGetPropertyContextReq;
112
113typedef struct {
114    CARD8 type;
115    CARD8 pad1;
116    CARD16 sequenceNumber;
117    CARD32 length;
118    CARD32 context_len;
119    CARD32 pad2;
120    CARD32 pad3;
121    CARD32 pad4;
122    CARD32 pad5;
123    CARD32 pad6;
124} SELinuxGetContextReply;
125
126typedef struct {
127    CARD8 type;
128    CARD8 pad1;
129    CARD16 sequenceNumber;
130    CARD32 length;
131    CARD32 count;
132    CARD32 pad2;
133    CARD32 pad3;
134    CARD32 pad4;
135    CARD32 pad5;
136    CARD32 pad6;
137} SELinuxListItemsReply;
138
139#endif                          /* _XSELINUX_H */
140