#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _OSDEP_H_
#define _OSDEP_H_ 1
#define BOTIMEOUT 200
#define BUFSIZE 4096
#define BUFWATERMARK 8192
#if defined(XDMCP) || defined(HASXDMAUTH)
#include <X11/Xdmcp.h>
#endif
#ifdef _POSIX_SOURCE
#include <limits.h>
#else
#define _POSIX_SOURCE
#include <limits.h>
#undef _POSIX_SOURCE
#endif
#ifndef OPEN_MAX
#ifdef SVR4
#define OPEN_MAX 256
#else
#include <sys/param.h>
#ifndef OPEN_MAX
#if defined(NOFILE) && !defined(NOFILES_MAX)
#define OPEN_MAX NOFILE
#else
#if !defined(WIN32)
#define OPEN_MAX NOFILES_MAX
#else
#define OPEN_MAX 256
#endif
#endif
#endif
#endif
#endif
#include <X11/Xpoll.h>
#if OPEN_MAX <= 256
#define MAXSOCKS (OPEN_MAX - 1)
#else
#define MAXSOCKS 256
#endif
#define MAXSELECT (sizeof(fd_set) * NBBY)
#ifndef HAS_GETDTABLESIZE
#if !defined(SVR4) && !defined(SYSV)
#define HAS_GETDTABLESIZE
#endif
#endif
#include <stddef.h>
#if defined(XDMCP) || defined(HASXDMAUTH)
typedef Bool (*ValidatorFunc)(ARRAY8Ptr Auth, ARRAY8Ptr Data, int packet_type);
typedef Bool (*GeneratorFunc)(ARRAY8Ptr Auth, ARRAY8Ptr Data, int packet_type);
typedef Bool (*AddAuthorFunc)(unsigned name_length, const char *name,
unsigned data_length, char *data);
#endif
typedef struct _connectionInput {
struct _connectionInput *next;
char *buffer;
char *bufptr;
int bufcnt;
int lenLastReq;
int size;
unsigned int ignoreBytes;
} ConnectionInput, *ConnectionInputPtr;
typedef struct _connectionOutput {
struct _connectionOutput *next;
int size;
unsigned char *buf;
int count;
} ConnectionOutput, *ConnectionOutputPtr;
struct _osComm;
#define AuthInitArgs void
typedef void (*AuthInitFunc) (AuthInitArgs);
#define AuthAddCArgs unsigned short data_length, const char *data, XID id
typedef int (*AuthAddCFunc) (AuthAddCArgs);
#define AuthCheckArgs unsigned short data_length, const char *data, ClientPtr client, char **reason
typedef XID (*AuthCheckFunc) (AuthCheckArgs);
#define AuthFromIDArgs XID id, unsigned short *data_lenp, char **datap
typedef int (*AuthFromIDFunc) (AuthFromIDArgs);
#define AuthGenCArgs unsigned data_length, const char *data, XID id, unsigned *data_length_return, char **data_return
typedef XID (*AuthGenCFunc) (AuthGenCArgs);
#define AuthRemCArgs unsigned short data_length, const char *data
typedef int (*AuthRemCFunc) (AuthRemCArgs);
#define AuthRstCArgs void
typedef int (*AuthRstCFunc) (AuthRstCArgs);
#define AuthToIDArgs unsigned short data_length, char *data
typedef XID (*AuthToIDFunc) (AuthToIDArgs);
typedef void (*OsCloseFunc)(ClientPtr);
typedef int (*OsFlushFunc)(ClientPtr who, struct _osComm * oc, char* extraBuf, int extraCount);
typedef struct _osComm {
int fd;
ConnectionInputPtr input;
ConnectionOutputPtr output;
XID auth_id;
CARD32 conn_time;
struct _XtransConnInfo *trans_conn;
Bool local_client;
} OsCommRec, *OsCommPtr;
extern int FlushClient(
ClientPtr ,
OsCommPtr ,
const void * ,
int
);
extern void FreeOsBuffers(
OsCommPtr
);
#include "dix.h"
extern fd_set AllSockets;
extern fd_set AllClients;
extern fd_set LastSelectMask;
extern fd_set WellKnownConnections;
extern fd_set EnabledDevices;
extern fd_set ClientsWithInput;
extern fd_set ClientsWriteBlocked;
extern fd_set OutputPending;
extern fd_set IgnoredClientsWithInput;
#ifndef WIN32
extern int *ConnectionTranslation;
#else
extern int GetConnectionTranslation(int conn);
extern void SetConnectionTranslation(int conn, int client);
extern void ClearConnectionTranslation(void);
#endif
extern Bool NewOutputPending;
extern Bool AnyClientsWriteBlocked;
extern WorkQueuePtr workQueue;
#ifdef WIN32
typedef long int fd_mask;
#endif
#define ffs mffs
extern int mffs(fd_mask);
extern Bool ComputeLocalClient(ClientPtr client);
extern void GenerateRandomData (int len, char *buf);
extern XID MitCheckCookie (AuthCheckArgs);
extern XID MitGenerateCookie (AuthGenCArgs);
extern XID MitToID (AuthToIDArgs);
extern int MitAddCookie (AuthAddCArgs);
extern int MitFromID (AuthFromIDArgs);
extern int MitRemoveCookie (AuthRemCArgs);
extern int MitResetCookie (AuthRstCArgs);
#ifdef HASXDMAUTH
extern XID XdmCheckCookie (AuthCheckArgs);
extern XID XdmToID (AuthToIDArgs);
extern int XdmAddCookie (AuthAddCArgs);
extern int XdmFromID (AuthFromIDArgs);
extern int XdmRemoveCookie (AuthRemCArgs);
extern int XdmResetCookie (AuthRstCArgs);
#endif
#ifdef SECURE_RPC
extern void SecureRPCInit (AuthInitArgs);
extern XID SecureRPCCheck (AuthCheckArgs);
extern XID SecureRPCToID (AuthToIDArgs);
extern int SecureRPCAdd (AuthAddCArgs);
extern int SecureRPCFromID (AuthFromIDArgs);
extern int SecureRPCRemove (AuthRemCArgs);
extern int SecureRPCReset (AuthRstCArgs);
#endif
#ifdef XDMCP
extern void XdmcpUseMsg (void);
extern int XdmcpOptions(int argc, char **argv, int i);
extern void XdmcpRegisterConnection (
int type,
const char *address,
int addrlen);
extern void XdmcpRegisterAuthorizations (void);
extern void XdmcpRegisterAuthorization (const char *name, int namelen);
extern void XdmcpInit (void);
extern void XdmcpReset (void);
extern void XdmcpOpenDisplay(int sock);
extern void XdmcpCloseDisplay(int sock);
extern void XdmcpRegisterAuthentication (
const char *name,
int namelen,
const char *data,
int datalen,
ValidatorFunc Validator,
GeneratorFunc Generator,
AddAuthorFunc AddAuth);
struct sockaddr_in;
extern void XdmcpRegisterBroadcastAddress (const struct sockaddr_in *addr);
#endif
#ifdef HASXDMAUTH
extern void XdmAuthenticationInit (const char *cookie, int cookie_length);
#endif
#endif