123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- /***********************************************************
- Copyright 1987, 1998 The Open Group
- Permission to use, copy, modify, distribute, and sell this software and its
- documentation for any purpose is hereby granted without fee, provided that
- the above copyright notice appear in all copies and that both that
- copyright notice and this permission notice appear in supporting
- documentation.
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- 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. IN NO EVENT SHALL THE
- OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Except as contained in this notice, the name of The Open Group shall not be
- used in advertising or otherwise to promote the sale, use or other dealings
- in this Software without prior written authorization from The Open Group.
- Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- All Rights Reserved
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted,
- provided that the above copyright notice appear in all copies and that
- both that copyright notice and this permission notice appear in
- supporting documentation, and that the name of Digital not be
- used in advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
- DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- DIGITAL BE LIABLE FOR 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.
- ******************************************************************/
- #ifdef HAVE_DIX_CONFIG_H
- #include <dix-config.h>
- #endif
- #ifndef _OSDEP_H_
- #define _OSDEP_H_ 1
- #define BOTIMEOUT 200 /* in milliseconds */
- #define BUFSIZE 4096
- #define BUFWATERMARK 8192
- #ifndef MAXBUFSIZE
- #define MAXBUFSIZE (1 << 22)
- #endif
- #include <X11/Xdmcp.h>
- #ifdef _POSIX_SOURCE
- #include <limits.h>
- #else
- #define _POSIX_SOURCE
- #include <limits.h>
- #undef _POSIX_SOURCE
- #endif
- #ifndef OPEN_MAX
- #include <sys/param.h>
- #ifndef OPEN_MAX
- #if defined(NOFILE) && !defined(NOFILES_MAX)
- #define OPEN_MAX NOFILE
- #else
- #define OPEN_MAX NOFILES_MAX
- #endif
- #endif
- #endif
- #include <X11/Xpoll.h>
- /*
- * MAXSOCKS is used only for initialising MaxClients when no other method
- * like sysconf(_SC_OPEN_MAX) is not supported.
- */
- #if OPEN_MAX <= 256
- #define MAXSOCKS (OPEN_MAX - 1)
- #else
- #define MAXSOCKS 256
- #endif
- /* MAXSELECT is the number of fds that select() can handle */
- #define MAXSELECT (sizeof(fd_set) * NBBY)
- #ifndef HAS_GETDTABLESIZE
- #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, const char *name,
- unsigned data_length, char *data);
- typedef struct _connectionInput {
- struct _connectionInput *next;
- char *buffer; /* contains current client input */
- char *bufptr; /* pointer to current start of data */
- int bufcnt; /* count of bytes in buffer */
- int lenLastReq;
- int size;
- } 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, const 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; /* authorization id */
- CARD32 conn_time; /* timestamp if not established, else 0 */
- struct _XtransConnInfo *trans_conn; /* transport connection object */
- } OsCommRec, *OsCommPtr;
- extern int FlushClient(
- ClientPtr /*who*/,
- OsCommPtr /*oc*/,
- const char* /*extraBuf*/,
- int /*extraCount*/
- );
- #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;
- /* added by raphael */
- #define ffs mffs
- extern int mffs(fd_mask);
- /* in auth.c */
- extern void GenerateRandomData (int len, char *buf);
- /* in mitauth.c */
- extern XID MitCheckCookie (AuthCheckArgs);
- extern XID MitToID (AuthToIDArgs);
- extern int MitAddCookie (AuthAddCArgs);
- extern int MitFromID (AuthFromIDArgs);
- extern int MitRemoveCookie (AuthRemCArgs);
- extern int MitResetCookie (AuthRstCArgs);
- /* in xdmauth.c */
- #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
- /* in rpcauth.c */
- #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
- /* in secauth.c */
- extern XID AuthSecurityCheck (AuthCheckArgs);
- /* in xdmcp.c */
- extern void XdmcpUseMsg (void);
- extern int XdmcpOptions(int argc, char **argv, int i);
- extern void XdmcpSetAuthentication (ARRAY8Ptr name);
- extern void XdmcpRegisterConnection (
- int type,
- const char *address,
- int addrlen);
- extern void XdmcpRegisterAuthorizations (void);
- extern void XdmcpRegisterAuthorization (const char *name, int namelen);
- extern void XdmcpRegisterDisplayClass (const 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 (
- const char *name,
- int namelen,
- const 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 (const struct sockaddr_in *addr);
- #ifdef HASXDMAUTH
- extern void XdmAuthenticationInit (const char *cookie, int cookie_length);
- #endif
- #endif /* _OSDEP_H_ */
|