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