~ubuntu-branches/ubuntu/dapper/rdesktop/dapper

« back to all changes in this revision

Viewing changes to constants.h

  • Committer: Bazaar Package Importer
  • Author(s): Sam Johnston
  • Date: 2004-02-04 17:52:26 UTC
  • Revision ID: james.westby@ubuntu.com-20040204175226-87kz4bzs1nimji68
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
   rdesktop: A Remote Desktop Protocol client.
 
3
   Miscellaneous protocol constants
 
4
   Copyright (C) Matthew Chapman 1999-2002
 
5
   
 
6
   This program is free software; you can redistribute it and/or modify
 
7
   it under the terms of the GNU General Public License as published by
 
8
   the Free Software Foundation; either version 2 of the License, or
 
9
   (at your option) any later version.
 
10
   
 
11
   This program is distributed in the hope that it will be useful,
 
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
   GNU General Public License for more details.
 
15
   
 
16
   You should have received a copy of the GNU General Public License
 
17
   along with this program; if not, write to the Free Software
 
18
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
19
*/
 
20
 
 
21
/* TCP port for Remote Desktop Protocol */
 
22
#define TCP_PORT_RDP 3389
 
23
 
 
24
/* ISO PDU codes */
 
25
enum ISO_PDU_CODE
 
26
{
 
27
        ISO_PDU_CR = 0xE0,      /* Connection Request */
 
28
        ISO_PDU_CC = 0xD0,      /* Connection Confirm */
 
29
        ISO_PDU_DR = 0x80,      /* Disconnect Request */
 
30
        ISO_PDU_DT = 0xF0,      /* Data */
 
31
        ISO_PDU_ER = 0x70       /* Error */
 
32
};
 
33
 
 
34
/* MCS PDU codes */
 
35
enum MCS_PDU_TYPE
 
36
{
 
37
        MCS_EDRQ = 1,           /* Erect Domain Request */
 
38
        MCS_DPUM = 8,           /* Disconnect Provider Ultimatum */
 
39
        MCS_AURQ = 10,          /* Attach User Request */
 
40
        MCS_AUCF = 11,          /* Attach User Confirm */
 
41
        MCS_CJRQ = 14,          /* Channel Join Request */
 
42
        MCS_CJCF = 15,          /* Channel Join Confirm */
 
43
        MCS_SDRQ = 25,          /* Send Data Request */
 
44
        MCS_SDIN = 26           /* Send Data Indication */
 
45
};
 
46
 
 
47
#define MCS_CONNECT_INITIAL     0x7f65
 
48
#define MCS_CONNECT_RESPONSE    0x7f66
 
49
 
 
50
#define BER_TAG_BOOLEAN         1
 
51
#define BER_TAG_INTEGER         2
 
52
#define BER_TAG_OCTET_STRING    4
 
53
#define BER_TAG_RESULT          10
 
54
#define MCS_TAG_DOMAIN_PARAMS   0x30
 
55
 
 
56
#define MCS_GLOBAL_CHANNEL      1003
 
57
#define MCS_USERCHANNEL_BASE    1001
 
58
 
 
59
/* RDP secure transport constants */
 
60
#define SEC_RANDOM_SIZE         32
 
61
#define SEC_MODULUS_SIZE        64
 
62
#define SEC_PADDING_SIZE        8
 
63
#define SEC_EXPONENT_SIZE       4
 
64
 
 
65
#define SEC_CLIENT_RANDOM       0x0001
 
66
#define SEC_ENCRYPT             0x0008
 
67
#define SEC_LOGON_INFO          0x0040
 
68
#define SEC_LICENCE_NEG         0x0080
 
69
 
 
70
#define SEC_TAG_SRV_INFO        0x0c01
 
71
#define SEC_TAG_SRV_CRYPT       0x0c02
 
72
#define SEC_TAG_SRV_CHANNELS    0x0c03
 
73
 
 
74
#define SEC_TAG_CLI_INFO        0xc001
 
75
#define SEC_TAG_CLI_CRYPT       0xc002
 
76
#define SEC_TAG_CLI_CHANNELS    0xc003
 
77
#define SEC_TAG_CLI_4           0xc004
 
78
 
 
79
#define SEC_TAG_PUBKEY          0x0006
 
80
#define SEC_TAG_KEYSIG          0x0008
 
81
 
 
82
#define SEC_RSA_MAGIC           0x31415352      /* RSA1 */
 
83
 
 
84
/* RDP licensing constants */
 
85
#define LICENCE_TOKEN_SIZE      10
 
86
#define LICENCE_HWID_SIZE       20
 
87
#define LICENCE_SIGNATURE_SIZE  16
 
88
 
 
89
#define LICENCE_TAG_DEMAND      0x01
 
90
#define LICENCE_TAG_AUTHREQ     0x02
 
91
#define LICENCE_TAG_ISSUE       0x03
 
92
#define LICENCE_TAG_REISSUE     0x04
 
93
#define LICENCE_TAG_PRESENT     0x12
 
94
#define LICENCE_TAG_REQUEST     0x13
 
95
#define LICENCE_TAG_AUTHRESP    0x15
 
96
#define LICENCE_TAG_RESULT      0xff
 
97
 
 
98
#define LICENCE_TAG_USER        0x000f
 
99
#define LICENCE_TAG_HOST        0x0010
 
100
 
 
101
/* RDP PDU codes */
 
102
enum RDP_PDU_TYPE
 
103
{
 
104
        RDP_PDU_DEMAND_ACTIVE = 1,
 
105
        RDP_PDU_CONFIRM_ACTIVE = 3,
 
106
        RDP_PDU_DEACTIVATE = 6,
 
107
        RDP_PDU_DATA = 7
 
108
};
 
109
 
 
110
enum RDP_DATA_PDU_TYPE
 
111
{
 
112
        RDP_DATA_PDU_UPDATE = 2,
 
113
        RDP_DATA_PDU_CONTROL = 20,
 
114
        RDP_DATA_PDU_POINTER = 27,
 
115
        RDP_DATA_PDU_INPUT = 28,
 
116
        RDP_DATA_PDU_SYNCHRONISE = 31,
 
117
        RDP_DATA_PDU_BELL = 34,
 
118
        RDP_DATA_PDU_LOGON = 38,
 
119
        RDP_DATA_PDU_FONT2 = 39,
 
120
        RDP_DATA_PDU_DISCONNECT = 47
 
121
};
 
122
 
 
123
enum RDP_CONTROL_PDU_TYPE
 
124
{
 
125
        RDP_CTL_REQUEST_CONTROL = 1,
 
126
        RDP_CTL_GRANT_CONTROL = 2,
 
127
        RDP_CTL_DETACH = 3,
 
128
        RDP_CTL_COOPERATE = 4
 
129
};
 
130
 
 
131
enum RDP_UPDATE_PDU_TYPE
 
132
{
 
133
        RDP_UPDATE_ORDERS = 0,
 
134
        RDP_UPDATE_BITMAP = 1,
 
135
        RDP_UPDATE_PALETTE = 2,
 
136
        RDP_UPDATE_SYNCHRONIZE = 3
 
137
};
 
138
 
 
139
enum RDP_POINTER_PDU_TYPE
 
140
{
 
141
        RDP_POINTER_SYSTEM = 1,
 
142
        RDP_POINTER_MOVE = 3,
 
143
        RDP_POINTER_COLOR = 6,
 
144
        RDP_POINTER_CACHED = 7
 
145
};
 
146
 
 
147
enum RDP_SYSTEM_POINTER_TYPE
 
148
{
 
149
        RDP_NULL_POINTER = 0,
 
150
        RDP_DEFAULT_POINTER = 0x7F00
 
151
};
 
152
 
 
153
enum RDP_INPUT_DEVICE
 
154
{
 
155
        RDP_INPUT_SYNCHRONIZE = 0,
 
156
        RDP_INPUT_CODEPOINT = 1,
 
157
        RDP_INPUT_VIRTKEY = 2,
 
158
        RDP_INPUT_SCANCODE = 4,
 
159
        RDP_INPUT_MOUSE = 0x8001
 
160
};
 
161
 
 
162
/* Device flags */
 
163
#define KBD_FLAG_RIGHT          0x0001
 
164
#define KBD_FLAG_EXT            0x0100
 
165
#define KBD_FLAG_QUIET          0x1000
 
166
#define KBD_FLAG_DOWN           0x4000
 
167
#define KBD_FLAG_UP             0x8000
 
168
 
 
169
/* These are for synchronization; not for keystrokes */
 
170
#define KBD_FLAG_SCROLL   0x0001
 
171
#define KBD_FLAG_NUMLOCK  0x0002
 
172
#define KBD_FLAG_CAPITAL  0x0004
 
173
 
 
174
/* See T.128 */
 
175
#define RDP_KEYPRESS 0
 
176
#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP)
 
177
 
 
178
#define MOUSE_FLAG_MOVE         0x0800
 
179
#define MOUSE_FLAG_BUTTON1      0x1000
 
180
#define MOUSE_FLAG_BUTTON2      0x2000
 
181
#define MOUSE_FLAG_BUTTON3      0x4000
 
182
#define MOUSE_FLAG_BUTTON4      0x0280
 
183
#define MOUSE_FLAG_BUTTON5      0x0380
 
184
#define MOUSE_FLAG_DOWN         0x8000
 
185
 
 
186
/* Raster operation masks */
 
187
#define ROP2_S(rop3) (rop3 & 0xf)
 
188
#define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2))
 
189
 
 
190
#define ROP2_COPY       0xc
 
191
#define ROP2_XOR        0x6
 
192
#define ROP2_AND        0x8
 
193
#define ROP2_NXOR       0x9
 
194
#define ROP2_OR         0xe
 
195
 
 
196
#define MIX_TRANSPARENT 0
 
197
#define MIX_OPAQUE      1
 
198
 
 
199
#define TEXT2_VERTICAL          0x04
 
200
#define TEXT2_IMPLICIT_X        0x20
 
201
 
 
202
/* RDP capabilities */
 
203
#define RDP_CAPSET_GENERAL      1       /* Maps to generalCapabilitySet in T.128 page 138 */
 
204
#define RDP_CAPLEN_GENERAL      0x18
 
205
#define OS_MAJOR_TYPE_UNIX      4
 
206
#define OS_MINOR_TYPE_XSERVER   7
 
207
 
 
208
#define RDP_CAPSET_BITMAP       2
 
209
#define RDP_CAPLEN_BITMAP       0x1C
 
210
 
 
211
#define RDP_CAPSET_ORDER        3
 
212
#define RDP_CAPLEN_ORDER        0x58
 
213
#define ORDER_CAP_NEGOTIATE     2
 
214
#define ORDER_CAP_NOSUPPORT     4
 
215
 
 
216
#define RDP_CAPSET_BMPCACHE     4
 
217
#define RDP_CAPLEN_BMPCACHE     0x28
 
218
 
 
219
#define RDP_CAPSET_CONTROL      5
 
220
#define RDP_CAPLEN_CONTROL      0x0C
 
221
 
 
222
#define RDP_CAPSET_ACTIVATE     7
 
223
#define RDP_CAPLEN_ACTIVATE     0x0C
 
224
 
 
225
#define RDP_CAPSET_POINTER      8
 
226
#define RDP_CAPLEN_POINTER      0x08
 
227
 
 
228
#define RDP_CAPSET_SHARE        9
 
229
#define RDP_CAPLEN_SHARE        0x08
 
230
 
 
231
#define RDP_CAPSET_COLCACHE     10
 
232
#define RDP_CAPLEN_COLCACHE     0x08
 
233
 
 
234
#define RDP_CAPSET_UNKNOWN      13
 
235
#define RDP_CAPLEN_UNKNOWN      0x9C
 
236
 
 
237
#define RDP_SOURCE              "MSTSC"
 
238
 
 
239
/* Logon flags */
 
240
#define RDP_LOGON_NORMAL        0x33
 
241
#define RDP_LOGON_AUTO          0x8
 
242
#define RDP_LOGON_BLOB          0x100
 
243
 
 
244
/* Keymap flags */
 
245
#define MapRightShiftMask   (1<<0)
 
246
#define MapLeftShiftMask    (1<<1)
 
247
#define MapShiftMask (MapRightShiftMask | MapLeftShiftMask)
 
248
 
 
249
#define MapRightAltMask     (1<<2)
 
250
#define MapLeftAltMask      (1<<3)
 
251
#define MapAltGrMask MapRightAltMask
 
252
 
 
253
#define MapRightCtrlMask    (1<<4)
 
254
#define MapLeftCtrlMask     (1<<5)
 
255
#define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask)
 
256
 
 
257
#define MapRightWinMask     (1<<6)
 
258
#define MapLeftWinMask      (1<<7)
 
259
#define MapWinMask (MapRightWinMask | MapLeftWinMask)
 
260
 
 
261
#define MapNumLockMask      (1<<8)
 
262
#define MapCapsLockMask     (1<<9)
 
263
 
 
264
#define MapLocalStateMask   (1<<10)
 
265
 
 
266
#define MapInhibitMask      (1<<11)
 
267
 
 
268
#define MASK_ADD_BITS(var, mask) (var |= mask)
 
269
#define MASK_REMOVE_BITS(var, mask) (var &= ~mask)
 
270
#define MASK_HAS_BITS(var, mask) ((var & mask)>0)
 
271
#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0)))
 
272
 
 
273
/* Clipboard constants, "borrowed" from GCC system headers in 
 
274
   the w32 cross compiler */
 
275
 
 
276
#define CF_TEXT         1
 
277
#define CF_BITMAP       2
 
278
#define CF_METAFILEPICT 3
 
279
#define CF_SYLK         4
 
280
#define CF_DIF          5
 
281
#define CF_TIFF         6
 
282
#define CF_OEMTEXT      7
 
283
#define CF_DIB          8
 
284
#define CF_PALETTE      9
 
285
#define CF_PENDATA      10
 
286
#define CF_RIFF         11
 
287
#define CF_WAVE         12
 
288
#define CF_UNICODETEXT  13
 
289
#define CF_ENHMETAFILE  14
 
290
#define CF_HDROP        15
 
291
#define CF_LOCALE       16
 
292
#define CF_MAX          17
 
293
#define CF_OWNERDISPLAY 128
 
294
#define CF_DSPTEXT      129
 
295
#define CF_DSPBITMAP    130
 
296
#define CF_DSPMETAFILEPICT      131
 
297
#define CF_DSPENHMETAFILE       142
 
298
#define CF_PRIVATEFIRST 512
 
299
#define CF_PRIVATELAST  767
 
300
#define CF_GDIOBJFIRST  768
 
301
#define CF_GDIOBJLAST   1023
 
302
 
 
303
/* Sound format constants */
 
304
#define WAVE_FORMAT_PCM         1
 
305
#define WAVE_FORMAT_ADPCM       2
 
306
#define WAVE_FORMAT_ALAW        6
 
307
#define WAVE_FORMAT_MULAW       7
 
308
 
 
309
/* Virtual channel options */
 
310
#define CHANNEL_OPTION_INITIALIZED      0x80000000
 
311
#define CHANNEL_OPTION_ENCRYPT_RDP      0x40000000
 
312
#define CHANNEL_OPTION_COMPRESS_RDP     0x00800000
 
313
#define CHANNEL_OPTION_SHOW_PROTOCOL    0x00200000
 
314
 
 
315
/* NT status codes for RDPDR */
 
316
#define STATUS_SUCCESS                  0x00000000
 
317
#define STATUS_INVALID_PARAMETER        0xc000000d
 
318
#define STATUS_INVALID_DEVICE_REQUEST   0xc0000010
 
319
#define STATUS_ACCESS_DENIED            0xc0000022