xace.h revision 4642e01f
105b261ecSmrg/************************************************************ 205b261ecSmrg 305b261ecSmrgAuthor: Eamon Walsh <ewalsh@epoch.ncsc.mil> 405b261ecSmrg 505b261ecSmrgPermission to use, copy, modify, distribute, and sell this software and its 605b261ecSmrgdocumentation for any purpose is hereby granted without fee, provided that 705b261ecSmrgthis permission notice appear in supporting documentation. This permission 805b261ecSmrgnotice shall be included in all copies or substantial portions of the 905b261ecSmrgSoftware. 1005b261ecSmrg 1105b261ecSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1205b261ecSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1305b261ecSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1405b261ecSmrgAUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 1505b261ecSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1605b261ecSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 1705b261ecSmrg 1805b261ecSmrg********************************************************/ 1905b261ecSmrg 2005b261ecSmrg#ifndef _XACE_H 2105b261ecSmrg#define _XACE_H 2205b261ecSmrg 2305b261ecSmrg#ifdef XACE 2405b261ecSmrg 254642e01fSmrg#define XACE_MAJOR_VERSION 2 2605b261ecSmrg#define XACE_MINOR_VERSION 0 2705b261ecSmrg 284642e01fSmrg#include "pixmap.h" 294642e01fSmrg#include "region.h" 304642e01fSmrg#include "window.h" 314642e01fSmrg#include "property.h" 324642e01fSmrg#include "selection.h" 3305b261ecSmrg 344642e01fSmrg/* Default window background */ 354642e01fSmrg#define XaceBackgroundNoneState(w) ((w)->forcedBG ? BackgroundPixel : None) 3605b261ecSmrg 3705b261ecSmrg/* security hooks */ 3805b261ecSmrg/* Constants used to identify the available security hooks 3905b261ecSmrg */ 4005b261ecSmrg#define XACE_CORE_DISPATCH 0 4105b261ecSmrg#define XACE_EXT_DISPATCH 1 4205b261ecSmrg#define XACE_RESOURCE_ACCESS 2 4305b261ecSmrg#define XACE_DEVICE_ACCESS 3 4405b261ecSmrg#define XACE_PROPERTY_ACCESS 4 454642e01fSmrg#define XACE_SEND_ACCESS 5 464642e01fSmrg#define XACE_RECEIVE_ACCESS 6 474642e01fSmrg#define XACE_CLIENT_ACCESS 7 4805b261ecSmrg#define XACE_EXT_ACCESS 8 494642e01fSmrg#define XACE_SERVER_ACCESS 9 504642e01fSmrg#define XACE_SELECTION_ACCESS 10 514642e01fSmrg#define XACE_SCREEN_ACCESS 11 524642e01fSmrg#define XACE_SCREENSAVER_ACCESS 12 534642e01fSmrg#define XACE_AUTH_AVAIL 13 544642e01fSmrg#define XACE_KEY_AVAIL 14 5505b261ecSmrg#define XACE_AUDIT_BEGIN 15 5605b261ecSmrg#define XACE_AUDIT_END 16 5705b261ecSmrg#define XACE_NUM_HOOKS 17 5805b261ecSmrg 5905b261ecSmrgextern CallbackListPtr XaceHooks[XACE_NUM_HOOKS]; 6005b261ecSmrg 6105b261ecSmrg/* Entry point for hook functions. Called by Xserver. 6205b261ecSmrg */ 6305b261ecSmrgextern int XaceHook( 6405b261ecSmrg int /*hook*/, 6505b261ecSmrg ... /*appropriate args for hook*/ 6605b261ecSmrg ); 6705b261ecSmrg 684642e01fSmrg/* Special-cased hook functions 694642e01fSmrg */ 704642e01fSmrgextern int XaceHookDispatch(ClientPtr ptr, int major); 714642e01fSmrgextern int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin, 724642e01fSmrg PropertyPtr *ppProp, Mask access_mode); 734642e01fSmrgextern int XaceHookSelectionAccess(ClientPtr ptr, 744642e01fSmrg Selection **ppSel, Mask access_mode); 754642e01fSmrgextern void XaceHookAuditEnd(ClientPtr ptr, int result); 764642e01fSmrg 7705b261ecSmrg/* Register a callback for a given hook. 7805b261ecSmrg */ 7905b261ecSmrg#define XaceRegisterCallback(hook,callback,data) \ 8005b261ecSmrg AddCallback(XaceHooks+(hook), callback, data) 8105b261ecSmrg 8205b261ecSmrg/* Unregister an existing callback for a given hook. 8305b261ecSmrg */ 8405b261ecSmrg#define XaceDeleteCallback(hook,callback,data) \ 8505b261ecSmrg DeleteCallback(XaceHooks+(hook), callback, data) 8605b261ecSmrg 8705b261ecSmrg 8805b261ecSmrg/* From the original Security extension... 8905b261ecSmrg */ 9005b261ecSmrg 9105b261ecSmrgextern void XaceCensorImage( 9205b261ecSmrg ClientPtr client, 9305b261ecSmrg RegionPtr pVisibleRegion, 9405b261ecSmrg long widthBytesLine, 9505b261ecSmrg DrawablePtr pDraw, 9605b261ecSmrg int x, int y, int w, int h, 9705b261ecSmrg unsigned int format, 9805b261ecSmrg char * pBuf 9905b261ecSmrg ); 10005b261ecSmrg 10105b261ecSmrg#else /* XACE */ 10205b261ecSmrg 1034642e01fSmrg/* Default window background */ 1044642e01fSmrg#define XaceBackgroundNoneState(w) None 1054642e01fSmrg 10605b261ecSmrg/* Define calls away when XACE is not being built. */ 10705b261ecSmrg 10805b261ecSmrg#ifdef __GNUC__ 1094642e01fSmrg#define XaceHook(args...) Success 1104642e01fSmrg#define XaceHookDispatch(args...) Success 1114642e01fSmrg#define XaceHookPropertyAccess(args...) Success 1124642e01fSmrg#define XaceHookSelectionAccess(args...) Success 1134642e01fSmrg#define XaceHookAuditEnd(args...) { ; } 11405b261ecSmrg#define XaceCensorImage(args...) { ; } 11505b261ecSmrg#else 1164642e01fSmrg#define XaceHook(...) Success 1174642e01fSmrg#define XaceHookDispatch(...) Success 1184642e01fSmrg#define XaceHookPropertyAccess(...) Success 1194642e01fSmrg#define XaceHookSelectionAccess(...) Success 1204642e01fSmrg#define XaceHookAuditEnd(...) { ; } 12105b261ecSmrg#define XaceCensorImage(...) { ; } 12205b261ecSmrg#endif 12305b261ecSmrg 12405b261ecSmrg#endif /* XACE */ 12505b261ecSmrg 12605b261ecSmrg#endif /* _XACE_H */ 127