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