tsolinfo.h revision 705
/* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* to whom the Software is furnished to do so, provided that the above
* copyright notice(s) and this permission notice appear in all copies of
* the Software and that both the above copyright notice(s) and this
* permission notice appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
* OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
* INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* of the copyright holder.
*/
#pragma ident "@(#)tsolinfo.h 1.24 09/05/15 SMI"
#ifndef _TSOL_INFO_H
#define _TSOL_INFO_H
#include <ucred.h>
#include "misc.h"
#include "dixstruct.h"
#include "globals.h"
/*********************************
*
* DEBUG INFO
*
*********************************/
* Level 0 messages are printed by all servers to stderr.
* Ranges of messages to print to stderr can be changed with Xorg -verbose N
* and Xephyr -verbosity N
* Ranges of messages to print to log can be changed with Xorg -logverbose N
* Other servers don't support runtime configuration of log messages yet.
*/
#define TSOL_MSG_ERROR 0 /* Always printed */
#define TSOL_MSG_POLICY_DENIED 5
#define TSOL_MSG_UNIMPLEMENTED 6
#define TSOL_MSG_ACCESS_TRACE 7
extern const char *TsolErrorNameString(int req);
extern const char *TsolPolicyReturnString(int pr);
extern const char *TsolRequestNameString(int req);
/*********************************
*
* CONSTANTS
*
*********************************/
/*
* X audit events start from 9101 in audit_uevents.h. The first 2 events
* are non-protocol ones viz. ClientConnect, mapped to 9101 and
* ClientDisconnect, mapped to 9102.
* The protocol events are mapped from 9103 onwards in the serial order
* of their respective protocol opcode, for eg, the protocol UngrabPointer
* which is has a protocol opcode 27 is mapped to 9129 (9102 + 27).
* All extension protocols are mapped to a single audit event AUE_XExtension
* as opcodes are assigined dynamically to these protocols. We set the
* extension protocol opcode to be 128, one more than the last standard opcode.
*/
#define XAUDIT_OFFSET 9102
#define XAUDIT_EXTENSION 128
#define MAX_CLIENT 16
/*
* Various flags for TsolInfoRec, TsolResRec
*/
#define DAC_WRITE_AUDITED 0x0000020
#define MAC_READ_AUDITED 0x0000040
#define MAC_WRITE_AUDITED 0x0000080
/*
* Polyinstantiated property/selections
*/
#define CONFIG_PRIV_FILE "config.privs"
#define CONFIG_EXTENSION_FILE "config.extensions"
#define PROCVECTORSIZE (256)
enum tsolconfig_types {
TSOL_ATOM = 0,
};
typedef enum tsolconfig_types tsolconfig_t;
/*
* Masks corresponding various types
*/
#define TSOLM_ATOM 1
#define SL_SIZE blabel_size()
/*********************************
*
* MACROS
*
*********************************/
#define DrawableIsRoot(pDraw)\
/*
* True if client is part of TrustedPath
*/
#define HasTrustedPath(tsolinfo)\
(tsolinfo->trusted_path ||\
#define XTSOLTrusted(pWin) \
/*********************************
*
* DATA STRUCTURES
*
*********************************/
enum client_types {
};
typedef enum client_types client_type_t;
/*
* Extended attributes for each client.
* Most of the information comes from getpeerucred()
*/
typedef struct _TsolInfo {
int forced_trust; /* client masked as trusted */
int asaverd;
} TsolInfoRec, *TsolInfoPtr;
/*
* per resource info
*/
typedef struct _TsolRes {
} TsolResRec, *TsolResPtr;
/*
* per property info. useful for polyprops
*/
typedef struct _TsolProp {
long size; /* size of data in (format/8) bytes */
unsigned char *data; /* value */
int serverOwned; /* internally created by the Server */
} TsolPropRec, *TsolPropPtr;
/*
* per selection info. useful for polyinstantiated selns
*/
typedef struct _TsolSeln {
} TsolSelnRec, *TsolSelnPtr;
/*
* information stored in devPrivates
*/
typedef union {
} TsolPrivRec, *TsolPrivPtr;
extern DevPrivateKey tsolPrivKey;
#define TsolClientPriv(pClient) \
#define TsolWindowPriv(pWin) \
#define TsolPixmapPriv(pPix) \
#define TsolPropertyPriv(pProp) \
#define TsolSelectionPriv(pSel) \
typedef struct _TsolNodeRec {
unsigned int flags;
int slcount; /* no. of SLs referenced */
int slsize; /* size of the sl array */
int IsSpecial;
} TsolNodeRec, *TsolNodePtr;
/*
* if polyinst true, the name list is polyinstantiated
* if false, the everything except the list is polyinstantiated
* NOTE: Default for seln: polyinstantiate the list
* Default for prop: polyinstantiate everything except the list
*/
typedef struct _TsolPolyAtom {
int polyinst;
int size; /* max size of the list */
int count; /* how many are actually valid */
char **name;
/*
* PolyInstInfo represents if a get request will match the
* client's sl,uid for this or it will use the polyinstinfo
*/
typedef struct _TsolPolyInstInfo {
int enabled; /* if true use following sl, uid */
/*
* Disable flags for extensions
*/
typedef struct _extensionFlag {
/*
* Hot Key structure
* a primary & alternate
* Hot Keys
*/
typedef struct _HotKeyRec {
int initialized;
/*********************************
*
* EXTERNS
*
*********************************/
extern TsolPolyInstInfoRec tsolpolyinstinfo;
extern Bool system_audit_on;
/*********************************
*
* FUNCTION PROTOTYPES
*
*********************************/
extern int TsolDisabledExtension(const char *extname);
extern TsolPropPtr AllocTsolProp(void);
extern TsolPropPtr AllocServerTsolProp(void);
extern bslabel_t *lookupSL_low(void);
#endif /* _TSOL_INFO_H */