Xdmcp.h revision ff559fab
1ff559fabSmrg/* $XdotOrg: xc/lib/Xdmcp/Xdmcp.h,v 1.2 2004/04/23 18:43:41 eich Exp $ */ 2ff559fabSmrg/* $Xorg: Xdmcp.h,v 1.7 2001/04/13 14:43:00 steve Exp $ */ 3ff559fabSmrg/* 4ff559fabSmrg * Copyright 1989 Network Computing Devices, Inc., Mountain View, California. 5ff559fabSmrg * 6ff559fabSmrg * Permission to use, copy, modify, and distribute this software and its 7ff559fabSmrg * documentation for any purpose and without fee is hereby granted, provided 8ff559fabSmrg * that the above copyright notice appear in all copies and that both that 9ff559fabSmrg * copyright notice and this permission notice appear in supporting 10ff559fabSmrg * documentation, and that the name of N.C.D. not be used in advertising or 11ff559fabSmrg * publicity pertaining to distribution of the software without specific, 12ff559fabSmrg * written prior permission. N.C.D. makes no representations about the 13ff559fabSmrg * suitability of this software for any purpose. It is provided "as is" 14ff559fabSmrg * without express or implied warranty. 15ff559fabSmrg * 16ff559fabSmrg */ 17ff559fabSmrg/* $XFree86: xc/lib/Xdmcp/Xdmcp.h,v 3.7 2003/07/09 15:27:29 tsi Exp $ */ 18ff559fabSmrg 19ff559fabSmrg#ifndef _XDMCP_H_ 20ff559fabSmrg#define _XDMCP_H_ 21ff559fabSmrg 22ff559fabSmrg#include <X11/Xmd.h> 23ff559fabSmrg 24ff559fabSmrg#include <X11/Xfuncproto.h> 25ff559fabSmrg 26ff559fabSmrg_XFUNCPROTOBEGIN 27ff559fabSmrg 28ff559fabSmrg#define XDM_PROTOCOL_VERSION 1 29ff559fabSmrg#define XDM_UDP_PORT 177 30ff559fabSmrg 31ff559fabSmrg/* IANA has assigned FF0X:0:0:0:0:0:0:12B as the permanently assigned 32ff559fabSmrg * multicast addresses for XDMCP, where X in the prefix may be replaced 33ff559fabSmrg * by any valid scope identifier, such as 1 for Node-Local, 2 for Link-Local, 34ff559fabSmrg * 5 for Site-Local, and so on. We set the default here to the Link-Local 35ff559fabSmrg * version to most closely match the old IPv4 subnet broadcast behavior. 36ff559fabSmrg * Both xdm and X -query allow specifying a different address if a different 37ff559fabSmrg * scope is defined. 38ff559fabSmrg */ 39ff559fabSmrg#define XDM_DEFAULT_MCAST_ADDR6 "ff02:0:0:0:0:0:0:12b" 40ff559fabSmrg 41ff559fabSmrg#define XDM_MAX_MSGLEN 8192 42ff559fabSmrg#define XDM_MIN_RTX 2 43ff559fabSmrg#define XDM_MAX_RTX 32 44ff559fabSmrg#define XDM_RTX_LIMIT 7 45ff559fabSmrg#define XDM_KA_RTX_LIMIT 4 46ff559fabSmrg#define XDM_DEF_DORMANCY (3 * 60) /* 3 minutes */ 47ff559fabSmrg#define XDM_MAX_DORMANCY (24 * 60 * 60) /* 24 hours */ 48ff559fabSmrg 49ff559fabSmrgtypedef enum { 50ff559fabSmrg BROADCAST_QUERY = 1, QUERY, INDIRECT_QUERY, FORWARD_QUERY, 51ff559fabSmrg WILLING, UNWILLING, REQUEST, ACCEPT, DECLINE, MANAGE, REFUSE, 52ff559fabSmrg FAILED, KEEPALIVE, ALIVE 53ff559fabSmrg} xdmOpCode; 54ff559fabSmrg 55ff559fabSmrgtypedef enum { 56ff559fabSmrg XDM_QUERY, XDM_BROADCAST, XDM_INDIRECT, XDM_COLLECT_QUERY, 57ff559fabSmrg XDM_COLLECT_BROADCAST_QUERY, XDM_COLLECT_INDIRECT_QUERY, 58ff559fabSmrg XDM_START_CONNECTION, XDM_AWAIT_REQUEST_RESPONSE, 59ff559fabSmrg XDM_AWAIT_MANAGE_RESPONSE, XDM_MANAGE, XDM_RUN_SESSION, XDM_OFF, 60ff559fabSmrg XDM_AWAIT_USER_INPUT, XDM_KEEPALIVE, XDM_AWAIT_ALIVE_RESPONSE, 61ff559fabSmrg#if defined(IPv6) && defined(AF_INET6) 62ff559fabSmrg XDM_MULTICAST, XDM_COLLECT_MULTICAST_QUERY, 63ff559fabSmrg#endif 64ff559fabSmrg XDM_KEEP_ME_LAST 65ff559fabSmrg} xdmcp_states; 66ff559fabSmrg 67ff559fabSmrg#ifdef NOTDEF 68ff559fabSmrg/* table of hosts */ 69ff559fabSmrg 70ff559fabSmrg#define XDM_MAX_STR_LEN 21 71ff559fabSmrg#define XDM_MAX_HOSTS 20 72ff559fabSmrgstruct xdm_host_table { 73ff559fabSmrg struct sockaddr_in sockaddr; 74ff559fabSmrg char name[XDM_MAX_STR_LEN]; 75ff559fabSmrg char status[XDM_MAX_STR_LEN]; 76ff559fabSmrg}; 77ff559fabSmrg#endif /* NOTDEF */ 78ff559fabSmrg 79ff559fabSmrgtypedef CARD8 *CARD8Ptr; 80ff559fabSmrgtypedef CARD16 *CARD16Ptr; 81ff559fabSmrgtypedef CARD32 *CARD32Ptr; 82ff559fabSmrg 83ff559fabSmrgtypedef struct _ARRAY8 { 84ff559fabSmrg CARD16 length; 85ff559fabSmrg CARD8Ptr data; 86ff559fabSmrg} ARRAY8, *ARRAY8Ptr; 87ff559fabSmrg 88ff559fabSmrgtypedef struct _ARRAY16 { 89ff559fabSmrg CARD8 length; 90ff559fabSmrg CARD16Ptr data; 91ff559fabSmrg} ARRAY16, *ARRAY16Ptr; 92ff559fabSmrg 93ff559fabSmrgtypedef struct _ARRAY32 { 94ff559fabSmrg CARD8 length; 95ff559fabSmrg CARD32Ptr data; 96ff559fabSmrg} ARRAY32, *ARRAY32Ptr; 97ff559fabSmrg 98ff559fabSmrgtypedef struct _ARRAYofARRAY8 { 99ff559fabSmrg CARD8 length; 100ff559fabSmrg ARRAY8Ptr data; 101ff559fabSmrg} ARRAYofARRAY8, *ARRAYofARRAY8Ptr; 102ff559fabSmrg 103ff559fabSmrgtypedef struct _XdmcpHeader { 104ff559fabSmrg CARD16 version, opcode, length; 105ff559fabSmrg} XdmcpHeader, *XdmcpHeaderPtr; 106ff559fabSmrg 107ff559fabSmrgtypedef struct _XdmcpBuffer { 108ff559fabSmrg BYTE *data; 109ff559fabSmrg int size; /* size of buffer pointed by to data */ 110ff559fabSmrg int pointer; /* current index into data */ 111ff559fabSmrg int count; /* bytes read from network into data */ 112ff559fabSmrg} XdmcpBuffer, *XdmcpBufferPtr; 113ff559fabSmrg 114ff559fabSmrgtypedef struct _XdmAuthKey { 115ff559fabSmrg BYTE data[8]; 116ff559fabSmrg} XdmAuthKeyRec, *XdmAuthKeyPtr; 117ff559fabSmrg 118ff559fabSmrg 119ff559fabSmrg/* implementation-independent network address structure. 120ff559fabSmrg Equiv to sockaddr* for sockets and netbuf* for STREAMS. */ 121ff559fabSmrg 122ff559fabSmrgtypedef char *XdmcpNetaddr; 123ff559fabSmrg 124ff559fabSmrgextern int XdmcpWriteARRAY16(XdmcpBufferPtr buffer, ARRAY16Ptr array); 125ff559fabSmrgextern int XdmcpWriteARRAY32(XdmcpBufferPtr buffer, ARRAY32Ptr array); 126ff559fabSmrgextern int XdmcpWriteARRAY8(XdmcpBufferPtr buffer, ARRAY8Ptr array); 127ff559fabSmrgextern int XdmcpWriteARRAYofARRAY8(XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array); 128ff559fabSmrgextern int XdmcpWriteCARD16(XdmcpBufferPtr buffer, unsigned value); 129ff559fabSmrgextern int XdmcpWriteCARD32(XdmcpBufferPtr buffer, unsigned value); 130ff559fabSmrgextern int XdmcpWriteCARD8(XdmcpBufferPtr buffer, unsigned value); 131ff559fabSmrgextern int XdmcpWriteHeader(XdmcpBufferPtr buffer, XdmcpHeaderPtr header); 132ff559fabSmrg 133ff559fabSmrgextern int XdmcpFlush(int fd, XdmcpBufferPtr buffer, XdmcpNetaddr to, int tolen); 134ff559fabSmrg 135ff559fabSmrgextern int XdmcpReadARRAY16(XdmcpBufferPtr buffer, ARRAY16Ptr array); 136ff559fabSmrgextern int XdmcpReadARRAY32(XdmcpBufferPtr buffer, ARRAY32Ptr array); 137ff559fabSmrgextern int XdmcpReadARRAY8(XdmcpBufferPtr buffer, ARRAY8Ptr array); 138ff559fabSmrgextern int XdmcpReadARRAYofARRAY8(XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array); 139ff559fabSmrgextern int XdmcpReadCARD16(XdmcpBufferPtr buffer, CARD16Ptr valuep); 140ff559fabSmrgextern int XdmcpReadCARD32(XdmcpBufferPtr buffer, CARD32Ptr valuep); 141ff559fabSmrgextern int XdmcpReadCARD8(XdmcpBufferPtr buffer, CARD8Ptr valuep); 142ff559fabSmrgextern int XdmcpReadHeader(XdmcpBufferPtr buffer, XdmcpHeaderPtr header); 143ff559fabSmrg 144ff559fabSmrgextern int XdmcpFill(int fd, XdmcpBufferPtr buffer, XdmcpNetaddr from, int *fromlen); 145ff559fabSmrg 146ff559fabSmrgextern int XdmcpReadRemaining(XdmcpBufferPtr buffer); 147ff559fabSmrg 148ff559fabSmrgextern void XdmcpDisposeARRAY8(ARRAY8Ptr array); 149ff559fabSmrgextern void XdmcpDisposeARRAY16(ARRAY16Ptr array); 150ff559fabSmrgextern void XdmcpDisposeARRAY32(ARRAY32Ptr array); 151ff559fabSmrgextern void XdmcpDisposeARRAYofARRAY8(ARRAYofARRAY8Ptr array); 152ff559fabSmrg 153ff559fabSmrgextern int XdmcpCopyARRAY8(ARRAY8Ptr src, ARRAY8Ptr dst); 154ff559fabSmrg 155ff559fabSmrgextern int XdmcpARRAY8Equal(ARRAY8Ptr array1, ARRAY8Ptr array2); 156ff559fabSmrg 157ff559fabSmrgextern void XdmcpGenerateKey (XdmAuthKeyPtr key); 158ff559fabSmrgextern void XdmcpIncrementKey (XdmAuthKeyPtr key); 159ff559fabSmrgextern void XdmcpDecrementKey (XdmAuthKeyPtr key); 160ff559fabSmrg#ifdef HASXDMAUTH 161ff559fabSmrgextern void XdmcpWrap(unsigned char *input, unsigned char *wrapper, unsigned char *output, int bytes); 162ff559fabSmrgextern void XdmcpUnwrap(unsigned char *input, unsigned char *wrapper, unsigned char *output, int bytes); 163ff559fabSmrg#endif 164ff559fabSmrg 165ff559fabSmrg#ifndef TRUE 166ff559fabSmrg#define TRUE 1 167ff559fabSmrg#define FALSE 0 168ff559fabSmrg#endif 169ff559fabSmrg 170ff559fabSmrg#if !defined(Xalloc) && !defined(xalloc) && !defined(Xrealloc) 171ff559fabSmrgextern void *Xalloc (unsigned long amount); 172ff559fabSmrgextern void *Xrealloc (void *old, unsigned long amount); 173ff559fabSmrgextern void Xfree(void *old); 174ff559fabSmrg#endif 175ff559fabSmrg 176ff559fabSmrgextern int XdmcpCompareKeys (XdmAuthKeyPtr a, XdmAuthKeyPtr b); 177ff559fabSmrg 178ff559fabSmrgextern int XdmcpAllocARRAY16 (ARRAY16Ptr array, int length); 179ff559fabSmrgextern int XdmcpAllocARRAY32 (ARRAY32Ptr array, int length); 180ff559fabSmrgextern int XdmcpAllocARRAY8 (ARRAY8Ptr array, int length); 181ff559fabSmrgextern int XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length); 182ff559fabSmrg 183ff559fabSmrgextern int XdmcpReallocARRAY16 (ARRAY16Ptr array, int length); 184ff559fabSmrgextern int XdmcpReallocARRAY32 (ARRAY32Ptr array, int length); 185ff559fabSmrgextern int XdmcpReallocARRAY8 (ARRAY8Ptr array, int length); 186ff559fabSmrgextern int XdmcpReallocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length); 187ff559fabSmrg 188ff559fabSmrg_XFUNCPROTOEND 189ff559fabSmrg 190ff559fabSmrg#endif /* _XDMCP_H_ */ 191