]> git.sesse.net Git - rdpsrv/blobdiff - constants.h
Pull in even more rdesktop source.
[rdpsrv] / constants.h
diff --git a/constants.h b/constants.h
new file mode 100644 (file)
index 0000000..15b6bb3
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+   rdesktop: A Remote Desktop Protocol client.
+   Miscellaneous protocol constants
+   Copyright (C) Matthew Chapman 1999-2002
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+/* TCP port for Remote Desktop Protocol */
+#define TCP_PORT_RDP 3389
+
+/* ISO PDU codes */
+enum ISO_PDU_CODE
+{
+       ISO_PDU_CR = 0xE0,      /* Connection Request */
+       ISO_PDU_CC = 0xD0,      /* Connection Confirm */
+       ISO_PDU_DR = 0x80,      /* Disconnect Request */
+       ISO_PDU_DT = 0xF0,      /* Data */
+       ISO_PDU_ER = 0x70       /* Error */
+};
+
+/* MCS PDU codes */
+enum MCS_PDU_TYPE
+{
+       MCS_EDRQ = 1,           /* Erect Domain Request */
+       MCS_DPUM = 8,           /* Disconnect Provider Ultimatum */
+       MCS_AURQ = 10,          /* Attach User Request */
+       MCS_AUCF = 11,          /* Attach User Confirm */
+       MCS_CJRQ = 14,          /* Channel Join Request */
+       MCS_CJCF = 15,          /* Channel Join Confirm */
+       MCS_SDRQ = 25,          /* Send Data Request */
+       MCS_SDIN = 26           /* Send Data Indication */
+};
+
+#define MCS_CONNECT_INITIAL    0x7f65
+#define MCS_CONNECT_RESPONSE   0x7f66
+
+#define BER_TAG_BOOLEAN                1
+#define BER_TAG_INTEGER                2
+#define BER_TAG_OCTET_STRING   4
+#define BER_TAG_RESULT         10
+#define MCS_TAG_DOMAIN_PARAMS  0x30
+
+#define MCS_GLOBAL_CHANNEL     1003
+#define MCS_USERCHANNEL_BASE    1001
+
+/* RDP secure transport constants */
+#define SEC_RANDOM_SIZE                32
+#define SEC_MODULUS_SIZE       64
+#define SEC_PADDING_SIZE       8
+#define SEC_EXPONENT_SIZE      4
+
+#define SEC_CLIENT_RANDOM      0x0001
+#define SEC_ENCRYPT            0x0008
+#define SEC_LOGON_INFO         0x0040
+#define SEC_LICENCE_NEG                0x0080
+
+#define SEC_TAG_SRV_INFO       0x0c01
+#define SEC_TAG_SRV_CRYPT      0x0c02
+#define SEC_TAG_SRV_CHANNELS   0x0c03
+
+#define SEC_TAG_CLI_INFO       0xc001
+#define SEC_TAG_CLI_CRYPT      0xc002
+#define SEC_TAG_CLI_CHANNELS    0xc003
+#define SEC_TAG_CLI_4           0xc004
+
+#define SEC_TAG_PUBKEY         0x0006
+#define SEC_TAG_KEYSIG         0x0008
+
+#define SEC_RSA_MAGIC          0x31415352      /* RSA1 */
+
+/* RDP licensing constants */
+#define LICENCE_TOKEN_SIZE     10
+#define LICENCE_HWID_SIZE      20
+#define LICENCE_SIGNATURE_SIZE 16
+
+#define LICENCE_TAG_DEMAND     0x01
+#define LICENCE_TAG_AUTHREQ    0x02
+#define LICENCE_TAG_ISSUE      0x03
+#define LICENCE_TAG_REISSUE    0x04
+#define LICENCE_TAG_PRESENT    0x12
+#define LICENCE_TAG_REQUEST    0x13
+#define LICENCE_TAG_AUTHRESP   0x15
+#define LICENCE_TAG_RESULT     0xff
+
+#define LICENCE_TAG_USER       0x000f
+#define LICENCE_TAG_HOST       0x0010
+
+/* RDP PDU codes */
+enum RDP_PDU_TYPE
+{
+       RDP_PDU_DEMAND_ACTIVE = 1,
+       RDP_PDU_CONFIRM_ACTIVE = 3,
+       RDP_PDU_DEACTIVATE = 6,
+       RDP_PDU_DATA = 7
+};
+
+enum RDP_DATA_PDU_TYPE
+{
+       RDP_DATA_PDU_UPDATE = 2,
+       RDP_DATA_PDU_CONTROL = 20,
+       RDP_DATA_PDU_POINTER = 27,
+       RDP_DATA_PDU_INPUT = 28,
+       RDP_DATA_PDU_SYNCHRONISE = 31,
+       RDP_DATA_PDU_BELL = 34,
+       RDP_DATA_PDU_LOGON = 38,
+       RDP_DATA_PDU_FONT2 = 39,
+       RDP_DATA_PDU_DISCONNECT = 47
+};
+
+enum RDP_CONTROL_PDU_TYPE
+{
+       RDP_CTL_REQUEST_CONTROL = 1,
+       RDP_CTL_GRANT_CONTROL = 2,
+       RDP_CTL_DETACH = 3,
+       RDP_CTL_COOPERATE = 4
+};
+
+enum RDP_UPDATE_PDU_TYPE
+{
+       RDP_UPDATE_ORDERS = 0,
+       RDP_UPDATE_BITMAP = 1,
+       RDP_UPDATE_PALETTE = 2,
+       RDP_UPDATE_SYNCHRONIZE = 3
+};
+
+enum RDP_POINTER_PDU_TYPE
+{
+       RDP_POINTER_SYSTEM = 1,
+       RDP_POINTER_MOVE = 3,
+       RDP_POINTER_COLOR = 6,
+       RDP_POINTER_CACHED = 7
+};
+
+enum RDP_SYSTEM_POINTER_TYPE
+{
+       RDP_NULL_POINTER = 0,
+       RDP_DEFAULT_POINTER = 0x7F00
+};
+
+enum RDP_INPUT_DEVICE
+{
+       RDP_INPUT_SYNCHRONIZE = 0,
+       RDP_INPUT_CODEPOINT = 1,
+       RDP_INPUT_VIRTKEY = 2,
+       RDP_INPUT_SCANCODE = 4,
+       RDP_INPUT_MOUSE = 0x8001
+};
+
+/* Device flags */
+#define KBD_FLAG_RIGHT          0x0001
+#define KBD_FLAG_EXT            0x0100
+#define KBD_FLAG_QUIET          0x1000
+#define KBD_FLAG_DOWN           0x4000
+#define KBD_FLAG_UP             0x8000
+
+/* These are for synchronization; not for keystrokes */
+#define KBD_FLAG_SCROLL   0x0001
+#define KBD_FLAG_NUMLOCK  0x0002
+#define KBD_FLAG_CAPITAL  0x0004
+
+/* See T.128 */
+#define RDP_KEYPRESS 0
+#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP)
+
+#define MOUSE_FLAG_MOVE         0x0800
+#define MOUSE_FLAG_BUTTON1      0x1000
+#define MOUSE_FLAG_BUTTON2      0x2000
+#define MOUSE_FLAG_BUTTON3      0x4000
+#define MOUSE_FLAG_BUTTON4      0x0280
+#define MOUSE_FLAG_BUTTON5      0x0380
+#define MOUSE_FLAG_DOWN         0x8000
+
+/* Raster operation masks */
+#define ROP2_S(rop3) (rop3 & 0xf)
+#define ROP2_P(rop3) ((rop3 & 0x3) | ((rop3 & 0x30) >> 2))
+
+#define ROP2_COPY      0xc
+#define ROP2_XOR       0x6
+#define ROP2_AND       0x8
+#define ROP2_NXOR      0x9
+#define ROP2_OR                0xe
+
+#define MIX_TRANSPARENT        0
+#define MIX_OPAQUE     1
+
+#define TEXT2_VERTICAL         0x04
+#define TEXT2_IMPLICIT_X       0x20
+
+/* RDP capabilities */
+#define RDP_CAPSET_GENERAL     1       /* Maps to generalCapabilitySet in T.128 page 138 */
+#define RDP_CAPLEN_GENERAL     0x18
+#define OS_MAJOR_TYPE_UNIX     4
+#define OS_MINOR_TYPE_XSERVER  7
+
+#define RDP_CAPSET_BITMAP      2
+#define RDP_CAPLEN_BITMAP      0x1C
+
+#define RDP_CAPSET_ORDER       3
+#define RDP_CAPLEN_ORDER       0x58
+#define ORDER_CAP_NEGOTIATE    2
+#define ORDER_CAP_NOSUPPORT    4
+
+#define RDP_CAPSET_BMPCACHE    4
+#define RDP_CAPLEN_BMPCACHE    0x28
+
+#define RDP_CAPSET_CONTROL     5
+#define RDP_CAPLEN_CONTROL     0x0C
+
+#define RDP_CAPSET_ACTIVATE    7
+#define RDP_CAPLEN_ACTIVATE    0x0C
+
+#define RDP_CAPSET_POINTER     8
+#define RDP_CAPLEN_POINTER     0x08
+
+#define RDP_CAPSET_SHARE       9
+#define RDP_CAPLEN_SHARE       0x08
+
+#define RDP_CAPSET_COLCACHE    10
+#define RDP_CAPLEN_COLCACHE    0x08
+
+#define RDP_CAPSET_UNKNOWN     13
+#define RDP_CAPLEN_UNKNOWN     0x9C
+
+#define RDP_SOURCE             "MSTSC"
+
+/* Logon flags */
+#define RDP_LOGON_NORMAL       0x33
+#define RDP_LOGON_AUTO         0x8
+#define RDP_LOGON_BLOB         0x100
+
+/* Keymap flags */
+#define MapRightShiftMask   (1<<0)
+#define MapLeftShiftMask    (1<<1)
+#define MapShiftMask (MapRightShiftMask | MapLeftShiftMask)
+
+#define MapRightAltMask     (1<<2)
+#define MapLeftAltMask      (1<<3)
+#define MapAltGrMask MapRightAltMask
+
+#define MapRightCtrlMask    (1<<4)
+#define MapLeftCtrlMask     (1<<5)
+#define MapCtrlMask (MapRightCtrlMask | MapLeftCtrlMask)
+
+#define MapRightWinMask     (1<<6)
+#define MapLeftWinMask      (1<<7)
+#define MapWinMask (MapRightWinMask | MapLeftWinMask)
+
+#define MapNumLockMask      (1<<8)
+#define MapCapsLockMask     (1<<9)
+
+#define MapLocalStateMask   (1<<10)
+
+#define MapInhibitMask      (1<<11)
+
+#define MASK_ADD_BITS(var, mask) (var |= mask)
+#define MASK_REMOVE_BITS(var, mask) (var &= ~mask)
+#define MASK_HAS_BITS(var, mask) ((var & mask)>0)
+#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask : 0)))
+
+/* Clipboard constants, "borrowed" from GCC system headers in 
+   the w32 cross compiler */
+
+#define CF_TEXT         1
+#define CF_BITMAP       2
+#define CF_METAFILEPICT 3
+#define CF_SYLK         4
+#define CF_DIF          5
+#define CF_TIFF         6
+#define CF_OEMTEXT      7
+#define CF_DIB          8
+#define CF_PALETTE      9
+#define CF_PENDATA      10
+#define CF_RIFF         11
+#define CF_WAVE         12
+#define CF_UNICODETEXT  13
+#define CF_ENHMETAFILE  14
+#define CF_HDROP        15
+#define CF_LOCALE       16
+#define CF_MAX          17
+#define CF_OWNERDISPLAY 128
+#define CF_DSPTEXT      129
+#define CF_DSPBITMAP    130
+#define CF_DSPMETAFILEPICT      131
+#define CF_DSPENHMETAFILE       142
+#define CF_PRIVATEFIRST 512
+#define CF_PRIVATELAST  767
+#define CF_GDIOBJFIRST  768
+#define CF_GDIOBJLAST   1023
+
+/* Sound format constants */
+#define WAVE_FORMAT_PCM                1
+#define WAVE_FORMAT_ADPCM      2
+#define WAVE_FORMAT_ALAW       6
+#define WAVE_FORMAT_MULAW      7
+
+/* Virtual channel options */
+#define CHANNEL_OPTION_INITIALIZED     0x80000000
+#define CHANNEL_OPTION_ENCRYPT_RDP     0x40000000
+#define CHANNEL_OPTION_COMPRESS_RDP    0x00800000
+#define CHANNEL_OPTION_SHOW_PROTOCOL   0x00200000
+
+/* NT status codes for RDPDR */
+#define STATUS_SUCCESS                 0x00000000
+#define STATUS_INVALID_PARAMETER       0xc000000d
+#define STATUS_INVALID_DEVICE_REQUEST  0xc0000010
+#define STATUS_ACCESS_DENIED           0xc0000022