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