osdep.h revision 35c4bbdf
1/*********************************************************** 2 3Copyright 1987, 1998 The Open Group 4 5Permission to use, copy, modify, distribute, and sell this software and its 6documentation for any purpose is hereby granted without fee, provided that 7the above copyright notice appear in all copies and that both that 8copyright notice and this permission notice appear in supporting 9documentation. 10 11The above copyright notice and this permission notice shall be included in 12all copies or substantial portions of the Software. 13 14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 21Except as contained in this notice, the name of The Open Group shall not be 22used in advertising or otherwise to promote the sale, use or other dealings 23in this Software without prior written authorization from The Open Group. 24 25Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. 26 27 All Rights Reserved 28 29Permission to use, copy, modify, and distribute this software and its 30documentation for any purpose and without fee is hereby granted, 31provided that the above copyright notice appear in all copies and that 32both that copyright notice and this permission notice appear in 33supporting documentation, and that the name of Digital not be 34used in advertising or publicity pertaining to distribution of the 35software without specific, written prior permission. 36 37DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 38ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 39DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 40ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 41WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 42ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 43SOFTWARE. 44 45******************************************************************/ 46 47#ifdef HAVE_DIX_CONFIG_H 48#include <dix-config.h> 49#endif 50 51#ifndef _OSDEP_H_ 52#define _OSDEP_H_ 1 53 54#if defined(XDMCP) || defined(HASXDMAUTH) 55#include <X11/Xdmcp.h> 56#endif 57 58#ifdef _POSIX_SOURCE 59#include <limits.h> 60#else 61#define _POSIX_SOURCE 62#include <limits.h> 63#undef _POSIX_SOURCE 64#endif 65 66#ifndef OPEN_MAX 67#ifdef SVR4 68#define OPEN_MAX 512 69#else 70#include <sys/param.h> 71#ifndef OPEN_MAX 72#if defined(NOFILE) && !defined(NOFILES_MAX) 73#define OPEN_MAX NOFILE 74#else 75#if !defined(WIN32) || defined(__CYGWIN__) 76#define OPEN_MAX NOFILES_MAX 77#else 78#define OPEN_MAX 512 79#endif 80#endif 81#endif 82#endif 83#endif 84 85#include <X11/Xpoll.h> 86 87/* 88 * MAXSOCKS is used only for initialising MaxClients when no other method 89 * like sysconf(_SC_OPEN_MAX) is not supported. 90 */ 91 92#if OPEN_MAX <= 512 93#define MAXSOCKS (OPEN_MAX - 1) 94#else 95#define MAXSOCKS 512 96#endif 97 98/* MAXSELECT is the number of fds that select() can handle */ 99#define MAXSELECT (sizeof(fd_set) * NBBY) 100 101#include <stddef.h> 102 103#if defined(XDMCP) || defined(HASXDMAUTH) 104typedef Bool (*ValidatorFunc) (ARRAY8Ptr Auth, ARRAY8Ptr Data, int packet_type); 105typedef Bool (*GeneratorFunc) (ARRAY8Ptr Auth, ARRAY8Ptr Data, int packet_type); 106typedef Bool (*AddAuthorFunc) (unsigned name_length, const char *name, 107 unsigned data_length, char *data); 108#endif 109 110typedef struct _connectionInput *ConnectionInputPtr; 111typedef struct _connectionOutput *ConnectionOutputPtr; 112 113struct _osComm; 114 115#define AuthInitArgs void 116typedef void (*AuthInitFunc) (AuthInitArgs); 117 118#define AuthAddCArgs unsigned short data_length, const char *data, XID id 119typedef int (*AuthAddCFunc) (AuthAddCArgs); 120 121#define AuthCheckArgs unsigned short data_length, const char *data, ClientPtr client, const char **reason 122typedef XID (*AuthCheckFunc) (AuthCheckArgs); 123 124#define AuthFromIDArgs XID id, unsigned short *data_lenp, char **datap 125typedef int (*AuthFromIDFunc) (AuthFromIDArgs); 126 127#define AuthGenCArgs unsigned data_length, const char *data, XID id, unsigned *data_length_return, char **data_return 128typedef XID (*AuthGenCFunc) (AuthGenCArgs); 129 130#define AuthRemCArgs unsigned short data_length, const char *data 131typedef int (*AuthRemCFunc) (AuthRemCArgs); 132 133#define AuthRstCArgs void 134typedef int (*AuthRstCFunc) (AuthRstCArgs); 135 136#define AuthToIDArgs unsigned short data_length, char *data 137typedef XID (*AuthToIDFunc) (AuthToIDArgs); 138 139typedef void (*OsCloseFunc) (ClientPtr); 140 141typedef int (*OsFlushFunc) (ClientPtr who, struct _osComm * oc, char *extraBuf, 142 int extraCount); 143 144typedef struct _osComm { 145 int fd; 146 ConnectionInputPtr input; 147 ConnectionOutputPtr output; 148 XID auth_id; /* authorization id */ 149 CARD32 conn_time; /* timestamp if not established, else 0 */ 150 struct _XtransConnInfo *trans_conn; /* transport connection object */ 151} OsCommRec, *OsCommPtr; 152 153extern int FlushClient(ClientPtr /*who */ , 154 OsCommPtr /*oc */ , 155 const void * /*extraBuf */ , 156 int /*extraCount */ 157 ); 158 159extern void FreeOsBuffers(OsCommPtr /*oc */ 160 ); 161 162#include "dix.h" 163 164extern fd_set AllSockets; 165extern fd_set AllClients; 166extern fd_set LastSelectMask; 167extern fd_set WellKnownConnections; 168extern fd_set EnabledDevices; 169extern fd_set ClientsWithInput; 170extern fd_set ClientsWriteBlocked; 171extern fd_set OutputPending; 172extern fd_set IgnoredClientsWithInput; 173 174#if !defined(WIN32) || defined(__CYGWIN__) 175extern int *ConnectionTranslation; 176#else 177extern int GetConnectionTranslation(int conn); 178extern void SetConnectionTranslation(int conn, int client); 179extern void ClearConnectionTranslation(void); 180#endif 181 182extern Bool NewOutputPending; 183extern Bool AnyClientsWriteBlocked; 184 185extern WorkQueuePtr workQueue; 186 187/* in WaitFor.c */ 188#if defined(WIN32) && !defined(__CYGWIN__) 189typedef long int fd_mask; 190#endif 191#define ffs mffs 192extern int mffs(fd_mask); 193 194/* in access.c */ 195extern Bool ComputeLocalClient(ClientPtr client); 196 197/* in auth.c */ 198extern void GenerateRandomData(int len, char *buf); 199 200/* in mitauth.c */ 201extern XID MitCheckCookie(AuthCheckArgs); 202extern XID MitGenerateCookie(AuthGenCArgs); 203extern XID MitToID(AuthToIDArgs); 204extern int MitAddCookie(AuthAddCArgs); 205extern int MitFromID(AuthFromIDArgs); 206extern int MitRemoveCookie(AuthRemCArgs); 207extern int MitResetCookie(AuthRstCArgs); 208 209/* in xdmauth.c */ 210#ifdef HASXDMAUTH 211extern XID XdmCheckCookie(AuthCheckArgs); 212extern XID XdmToID(AuthToIDArgs); 213extern int XdmAddCookie(AuthAddCArgs); 214extern int XdmFromID(AuthFromIDArgs); 215extern int XdmRemoveCookie(AuthRemCArgs); 216extern int XdmResetCookie(AuthRstCArgs); 217#endif 218 219/* in rpcauth.c */ 220#ifdef SECURE_RPC 221extern void SecureRPCInit(AuthInitArgs); 222extern XID SecureRPCCheck(AuthCheckArgs); 223extern XID SecureRPCToID(AuthToIDArgs); 224extern int SecureRPCAdd(AuthAddCArgs); 225extern int SecureRPCFromID(AuthFromIDArgs); 226extern int SecureRPCRemove(AuthRemCArgs); 227extern int SecureRPCReset(AuthRstCArgs); 228#endif 229 230#ifdef XDMCP 231/* in xdmcp.c */ 232extern void XdmcpUseMsg(void); 233extern int XdmcpOptions(int argc, char **argv, int i); 234extern void XdmcpRegisterConnection(int type, const char *address, int addrlen); 235extern void XdmcpRegisterAuthorizations(void); 236extern void XdmcpRegisterAuthorization(const char *name, int namelen); 237extern void XdmcpInit(void); 238extern void XdmcpReset(void); 239extern void XdmcpOpenDisplay(int sock); 240extern void XdmcpCloseDisplay(int sock); 241extern void XdmcpRegisterAuthentication(const char *name, 242 int namelen, 243 const char *data, 244 int datalen, 245 ValidatorFunc Validator, 246 GeneratorFunc Generator, 247 AddAuthorFunc AddAuth); 248 249struct sockaddr_in; 250extern void XdmcpRegisterBroadcastAddress(const struct sockaddr_in *addr); 251#endif 252 253#ifdef HASXDMAUTH 254extern void XdmAuthenticationInit(const char *cookie, int cookie_length); 255#endif 256 257#endif /* _OSDEP_H_ */ 258