45e9809aff7304721fddb95654901b32195c9c7avboxsync/************************************************************
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncAuthor: Eamon Walsh <ewalsh@epoch.ncsc.mil>
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncPermission to use, copy, modify, distribute, and sell this software and its
45e9809aff7304721fddb95654901b32195c9c7avboxsyncdocumentation for any purpose is hereby granted without fee, provided that
45e9809aff7304721fddb95654901b32195c9c7avboxsyncthis permission notice appear in supporting documentation. This permission
45e9809aff7304721fddb95654901b32195c9c7avboxsyncnotice shall be included in all copies or substantial portions of the
45e9809aff7304721fddb95654901b32195c9c7avboxsyncSoftware.
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
45e9809aff7304721fddb95654901b32195c9c7avboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45e9809aff7304721fddb95654901b32195c9c7avboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
45e9809aff7304721fddb95654901b32195c9c7avboxsyncAUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
45e9809aff7304721fddb95654901b32195c9c7avboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
45e9809aff7304721fddb95654901b32195c9c7avboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync********************************************************/
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifndef _XACE_H
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define _XACE_H
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Hook return codes */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceErrorOperation 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceAllowOperation 1
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceIgnoreOperation 2
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef XACE
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_EXTENSION_NAME "XAccessControlExtension"
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_MAJOR_VERSION 1
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_MINOR_VERSION 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "pixmap.h" /* for DrawablePtr */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#include "regionstr.h" /* for RegionPtr */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceNumberEvents 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceNumberErrors 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* security hooks */
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Constants used to identify the available security hooks
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_CORE_DISPATCH 0
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_EXT_DISPATCH 1
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_RESOURCE_ACCESS 2
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_DEVICE_ACCESS 3
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_PROPERTY_ACCESS 4
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_DRAWABLE_ACCESS 5
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_MAP_ACCESS 6
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_BACKGRND_ACCESS 7
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_EXT_ACCESS 8
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_HOSTLIST_ACCESS 9
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_SITE_POLICY 10
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_DECLARE_EXT_SECURE 11
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_AUTH_AVAIL 12
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_KEY_AVAIL 13
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_WINDOW_INIT 14
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_AUDIT_BEGIN 15
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_AUDIT_END 16
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XACE_NUM_HOOKS 17
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern CallbackListPtr XaceHooks[XACE_NUM_HOOKS];
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Entry point for hook functions. Called by Xserver.
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern int XaceHook(
45e9809aff7304721fddb95654901b32195c9c7avboxsync int /*hook*/,
45e9809aff7304721fddb95654901b32195c9c7avboxsync ... /*appropriate args for hook*/
45e9809aff7304721fddb95654901b32195c9c7avboxsync );
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Register a callback for a given hook.
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceRegisterCallback(hook,callback,data) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync AddCallback(XaceHooks+(hook), callback, data)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Unregister an existing callback for a given hook.
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceDeleteCallback(hook,callback,data) \
45e9809aff7304721fddb95654901b32195c9c7avboxsync DeleteCallback(XaceHooks+(hook), callback, data)
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* From the original Security extension...
45e9809aff7304721fddb95654901b32195c9c7avboxsync */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsyncextern void XaceCensorImage(
45e9809aff7304721fddb95654901b32195c9c7avboxsync ClientPtr client,
45e9809aff7304721fddb95654901b32195c9c7avboxsync RegionPtr pVisibleRegion,
45e9809aff7304721fddb95654901b32195c9c7avboxsync long widthBytesLine,
45e9809aff7304721fddb95654901b32195c9c7avboxsync DrawablePtr pDraw,
45e9809aff7304721fddb95654901b32195c9c7avboxsync int x, int y, int w, int h,
45e9809aff7304721fddb95654901b32195c9c7avboxsync unsigned int format,
45e9809aff7304721fddb95654901b32195c9c7avboxsync char * pBuf
45e9809aff7304721fddb95654901b32195c9c7avboxsync );
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else /* XACE */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync/* Define calls away when XACE is not being built. */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#ifdef __GNUC__
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceHook(args...) XaceAllowOperation
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceCensorImage(args...) { ; }
45e9809aff7304721fddb95654901b32195c9c7avboxsync#else
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceHook(...) XaceAllowOperation
45e9809aff7304721fddb95654901b32195c9c7avboxsync#define XaceCensorImage(...) { ; }
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif /* XACE */
45e9809aff7304721fddb95654901b32195c9c7avboxsync
45e9809aff7304721fddb95654901b32195c9c7avboxsync#endif /* _XACE_H */