65fea56f17cd614bc8908264df980a62e1931468vboxsync/************************************************************
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsyncAuthor: Eamon Walsh <ewalsh@tycho.nsa.gov>
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
65fea56f17cd614bc8908264df980a62e1931468vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
65fea56f17cd614bc8908264df980a62e1931468vboxsyncthis permission notice appear in supporting documentation. This permission
65fea56f17cd614bc8908264df980a62e1931468vboxsyncnotice shall be included in all copies or substantial portions of the
65fea56f17cd614bc8908264df980a62e1931468vboxsyncSoftware.
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65fea56f17cd614bc8908264df980a62e1931468vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
65fea56f17cd614bc8908264df980a62e1931468vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
65fea56f17cd614bc8908264df980a62e1931468vboxsyncAUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
65fea56f17cd614bc8908264df980a62e1931468vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
65fea56f17cd614bc8908264df980a62e1931468vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync********************************************************/
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#ifndef _XACE_H
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define _XACE_H
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#ifdef XACE
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_MAJOR_VERSION 2
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_MINOR_VERSION 0
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#include "pixmap.h"
65fea56f17cd614bc8908264df980a62e1931468vboxsync#include "region.h"
65fea56f17cd614bc8908264df980a62e1931468vboxsync#include "window.h"
65fea56f17cd614bc8908264df980a62e1931468vboxsync#include "property.h"
65fea56f17cd614bc8908264df980a62e1931468vboxsync#include "selection.h"
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Default window background */
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceBackgroundNoneState(w) ((w)->forcedBG ? BackgroundPixel : None)
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* security hooks */
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Constants used to identify the available security hooks
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_CORE_DISPATCH 0
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_EXT_DISPATCH 1
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_RESOURCE_ACCESS 2
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_DEVICE_ACCESS 3
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_PROPERTY_ACCESS 4
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_SEND_ACCESS 5
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_RECEIVE_ACCESS 6
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_CLIENT_ACCESS 7
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_EXT_ACCESS 8
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_SERVER_ACCESS 9
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_SELECTION_ACCESS 10
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_SCREEN_ACCESS 11
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_SCREENSAVER_ACCESS 12
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_AUTH_AVAIL 13
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_KEY_AVAIL 14
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_AUDIT_BEGIN 15
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_AUDIT_END 16
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XACE_NUM_HOOKS 17
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT CallbackListPtr XaceHooks[XACE_NUM_HOOKS];
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Entry point for hook functions. Called by Xserver.
65fea56f17cd614bc8908264df980a62e1931468vboxsync * Required by libdbe and libextmod
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT int XaceHook(int /*hook */ ,
65fea56f17cd614bc8908264df980a62e1931468vboxsync ... /*appropriate args for hook */
65fea56f17cd614bc8908264df980a62e1931468vboxsync );
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Special-cased hook functions
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT int XaceHookDispatch(ClientPtr ptr, int major);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin,
65fea56f17cd614bc8908264df980a62e1931468vboxsync PropertyPtr *ppProp,
65fea56f17cd614bc8908264df980a62e1931468vboxsync Mask access_mode);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT int XaceHookSelectionAccess(ClientPtr ptr, Selection ** ppSel,
65fea56f17cd614bc8908264df980a62e1931468vboxsync Mask access_mode);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT void XaceHookAuditEnd(ClientPtr ptr, int result);
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Register a callback for a given hook.
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceRegisterCallback(hook,callback,data) \
65fea56f17cd614bc8908264df980a62e1931468vboxsync AddCallback(XaceHooks+(hook), callback, data)
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Unregister an existing callback for a given hook.
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceDeleteCallback(hook,callback,data) \
65fea56f17cd614bc8908264df980a62e1931468vboxsync DeleteCallback(XaceHooks+(hook), callback, data)
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* XTrans wrappers for use by security modules
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT int XaceGetConnectionNumber(ClientPtr ptr);
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT int XaceIsLocal(ClientPtr ptr);
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* From the original Security extension...
65fea56f17cd614bc8908264df980a62e1931468vboxsync */
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsyncextern _X_EXPORT void XaceCensorImage(ClientPtr client,
65fea56f17cd614bc8908264df980a62e1931468vboxsync RegionPtr pVisibleRegion,
65fea56f17cd614bc8908264df980a62e1931468vboxsync long widthBytesLine,
65fea56f17cd614bc8908264df980a62e1931468vboxsync DrawablePtr pDraw,
65fea56f17cd614bc8908264df980a62e1931468vboxsync int x, int y, int w, int h,
65fea56f17cd614bc8908264df980a62e1931468vboxsync unsigned int format, char *pBuf);
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#else /* XACE */
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Default window background */
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceBackgroundNoneState(w) None
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync/* Define calls away when XACE is not being built. */
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#ifdef __GNUC__
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHook(args...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookDispatch(args...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookPropertyAccess(args...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookSelectionAccess(args...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookAuditEnd(args...) { ; }
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceCensorImage(args...) { ; }
65fea56f17cd614bc8908264df980a62e1931468vboxsync#else
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHook(...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookDispatch(...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookPropertyAccess(...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookSelectionAccess(...) Success
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceHookAuditEnd(...) { ; }
65fea56f17cd614bc8908264df980a62e1931468vboxsync#define XaceCensorImage(...) { ; }
65fea56f17cd614bc8908264df980a62e1931468vboxsync#endif
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#endif /* XACE */
65fea56f17cd614bc8908264df980a62e1931468vboxsync
65fea56f17cd614bc8908264df980a62e1931468vboxsync#endif /* _XACE_H */