#ifndef _OSDEP_H_
#define _OSDEP_H_ 1
#define BOTIMEOUT 200
#define BUFSIZE 4096
#define BUFWATERMARK 8192
#ifndef MAXBUFSIZE
#define MAXBUFSIZE (1 << 22)
#endif
#include <X11/Xdmcp.h>
#ifndef sgi
#ifndef X_NOT_POSIX
#ifdef _POSIX_SOURCE
#include <limits.h>
#else
#define _POSIX_SOURCE
#include <limits.h>
#undef _POSIX_SOURCE
#endif
#else
#ifdef WIN32
#define _POSIX_
#include <limits.h>
#undef _POSIX_
#endif
#endif
#endif
#ifdef __QNX__
#define NOFILES_MAX 256
#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
#ifndef __UNIXOS2__
#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)
#if !defined(hpux) && !defined(SVR4) && !defined(SYSV)
#define HAS_GETDTABLESIZE
#endif
#include <stddef.h>
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, char *name, unsigned data_length, char *data);
typedef struct _connectionInput {
struct _connectionInput *next;
char *buffer;
char *bufptr;
int bufcnt;
int lenLastReq;
int size;
} ConnectionInput, *ConnectionInputPtr;
typedef struct _connectionOutput {
struct _connectionOutput *next;
int size;
unsigned char *buf;
int count;
#ifdef LBX
Bool nocompress;
#endif
} ConnectionOutput, *ConnectionOutputPtr;
#ifdef K5AUTH
typedef struct _k5_state {
int stageno;
pointer srvcreds;
pointer srvname;
pointer ktname;
pointer skey;
} k5_state;
#endif
#ifdef LBX
typedef struct _LbxProxy *OsProxyPtr;
#endif
struct _osComm;
#define AuthInitArgs void
typedef void (*AuthInitFunc) (AuthInitArgs);
#define AuthAddCArgs unsigned short data_length, char *data, XID id
typedef int (*AuthAddCFunc) (AuthAddCArgs);
#define AuthCheckArgs unsigned short data_length, 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, char *data, XID id, unsigned *data_length_return, char **data_return
typedef XID (*AuthGenCFunc) (AuthGenCArgs);
#define AuthRemCArgs unsigned short data_length, 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;
#ifdef K5AUTH
k5_state authstate;
#endif
CARD32 conn_time;
struct _XtransConnInfo *trans_conn;
#ifdef LBX
OsProxyPtr proxy;
ConnectionInputPtr largereq;
OsCloseFunc Close;
OsFlushFunc Flush;
#endif
} OsCommRec, *OsCommPtr;
#ifdef LBX
#define FlushClient(who, oc, extraBuf, extraCount) \
(*(oc)->Flush)(who, oc, extraBuf, extraCount)
extern int StandardFlushClient(
ClientPtr ,
OsCommPtr ,
char* ,
int
);
extern int LbxFlushClient(ClientPtr , OsCommPtr ,
char *, int );
#else
extern int FlushClient(
ClientPtr ,
OsCommPtr ,
char* ,
int
);
#endif
extern void FreeOsBuffers(
OsCommPtr
);
#include "dix.h"
extern ConnectionInputPtr AllocateInputBuffer(void);
extern ConnectionOutputPtr AllocateOutputBuffer(void);
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;
extern int *ConnectionTranslation;
extern Bool NewOutputPending;
extern Bool AnyClientsWriteBlocked;
extern Bool CriticalOutputPending;
extern int timesThisConnection;
extern ConnectionInputPtr FreeInputs;
extern ConnectionOutputPtr FreeOutputs;
extern OsCommPtr AvailableInput;
extern WorkQueuePtr workQueue;
#define ffs mffs
extern int mffs(fd_mask);
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 K5AUTH
extern XID K5Check (AuthCheckArgs);
extern XID K5ToID (AuthToIDArgs);
extern int K5Add (AuthAddCArgs);
extern int K5FromID (AuthFromIDArgs);
extern int K5Remove (AuthRemCArgs);
extern int K5Reset (AuthRstCArgs);
#endif
extern XID AuthSecurityCheck (AuthCheckArgs);
extern void XdmcpUseMsg (void);
extern int XdmcpOptions(int argc, char **argv, int i);
extern void XdmcpSetAuthentication (ARRAY8Ptr name);
extern void XdmcpRegisterConnection (
int type,
char *address,
int addrlen);
extern void XdmcpRegisterAuthorizations (void);
extern void XdmcpRegisterAuthorization (char *name, int namelen);
extern void XdmcpRegisterDisplayClass (char *name, int length);
extern void XdmcpInit (void);
extern void XdmcpReset (void);
extern void XdmcpOpenDisplay(int sock);
extern void XdmcpCloseDisplay(int sock);
extern void XdmcpRegisterAuthentication (
char *name,
int namelen,
char *data,
int datalen,
ValidatorFunc Validator,
GeneratorFunc Generator,
AddAuthorFunc AddAuth);
extern int XdmcpCheckAuthentication (ARRAY8Ptr Name, ARRAY8Ptr Data, int packet_type);
extern int XdmcpAddAuthorization (ARRAY8Ptr name, ARRAY8Ptr data);
struct sockaddr_in;
extern void XdmcpRegisterBroadcastAddress (struct sockaddr_in *addr);
#endif