|
|
/****************************************************************************/ // at120ex.h
//
// RDP T.120 protocol extensions
//
// Copyright (C) 1997-2000 Microsoft Corporation
/****************************************************************************/ #ifndef _H_AT120EX
#define _H_AT120EX
/****************************************************************************/ /* TShare security constants. */ /****************************************************************************/ #include <tssec.h>
#if !defined(OS_WINCE) && !defined(OS_WIN16)
#include <winsta.h>
#endif //OS_WIN16
/****************************************************************************/ /* */ /* Definition of GCC User Data used by RDP */ /* */ /****************************************************************************/
/****************************************************************************/ /* H221 keys. */ /****************************************************************************/ #define H221_KEY_LEN 4
#define SERVER_H221_KEY "McDn"
#define CLIENT_H221_KEY "Duca"
/****************************************************************************/ /* User data identifiers */ /****************************************************************************/ /****************************************************************************/ /* Client to Server IDs */ /****************************************************************************/ #define RNS_UD_CS_CORE_ID 0xc001
#define RNS_UD_CS_SEC_ID 0xc002
#define RNS_UD_CS_NET_ID 0xc003
#define TS_UD_CS_CLUSTER_ID 0xC004
/****************************************************************************/ /* Server to Client IDs */ /****************************************************************************/ #define RNS_UD_SC_CORE_ID 0x0c01
#define RNS_UD_SC_SEC_ID 0x0c02
#define RNS_UD_SC_NET_ID 0x0c03
/****************************************************************************/ /* Color depths supported */ /****************************************************************************/ #define RNS_UD_COLOR_4BPP 0xca00
#define RNS_UD_COLOR_8BPP 0xca01
#define RNS_UD_COLOR_16BPP_555 0xca02
#define RNS_UD_COLOR_16BPP_565 0xca03
#define RNS_UD_COLOR_24BPP 0xca04
#ifdef DC_HICOLOR
/****************************************************************************/ /* High color support */ /****************************************************************************/ #define RNS_UD_24BPP_SUPPORT 0x01
#define RNS_UD_16BPP_SUPPORT 0x02
#define RNS_UD_15BPP_SUPPORT 0x04
#endif
/****************************************************************************/ /* SAS Sequence identifiers (incomplete). */ /* Specifies the SAS sequence the client will use to access the login */ /* screen in the Server. */ /****************************************************************************/ #define RNS_UD_SAS_NONE 0xaa01
#define RNS_UD_SAS_CADEL 0xaa02
#define RNS_UD_SAS_DEL 0xaa03
#define RNS_UD_SAS_SYSRQ 0xaa04
#define RNS_UD_SAS_ESC 0xaa05
#define RNS_UD_SAS_F8 0xaa06
/****************************************************************************/ /* Keyboard layout identifiers. */ /****************************************************************************/ #define RNS_UD_KBD_DEFAULT 0
/****************************************************************************/ /* Version number */ /* Major version Minor version */ /* 0xFFFF0000 0x0000FFFF */ /****************************************************************************/ #define RNS_UD_VERSION 0x00080004 // Major 0008 - Minor 0004
#define _RNS_MAJOR_VERSION(x) (x >> 16)
#define _RNS_MINOR_VERSION(x) (x & 0x0000ffff)
#define RNS_UD_MAJOR_VERSION (RNS_UD_VERSION >> 16)
#define RNS_UD_MINOR_VERSION (RNS_UD_VERSION & 0x0000ffff)
#define RNS_TERMSRV_40_UD_VERSION 0x00080001 // UD version used by Terminal
// server 4.0 RTM
#define RNS_DNS_USERNAME_UD_VERSION 0x00080004 // Usernames longer than 20 ok
/****************************************************************************/ // Security header flags
/****************************************************************************/ #define RNS_SEC_EXCHANGE_PKT 0x0001
#define RNS_SEC_ENCRYPT 0x0008
#define RNS_SEC_RESET_SEQNO 0x0010
#define RNS_SEC_IGNORE_SEQNO 0x0020
#define RNS_SEC_INFO_PKT 0x0040
#define RNS_SEC_LICENSE_PKT 0x0080
#define RDP_SEC_REDIRECTION_PKT 0x0100
#define RDP_SEC_REDIRECTION_PKT2 0x0200
#define RDP_SEC_REDIRECTION_PKT3 0x0400
#define RDP_SEC_SECURE_CHECKSUM 0x0800
//
// If this flag is specified by the server
// it means the client should encrypt all licensing
// packets it sends up to the server.
//
// This happens at this early stage because the server
// has to expose this capability before normal capability
// negotiation.
//
// We also have licensing packets encrypted from the
// server to the client, reusing the same flag here.
// For clarify, the flag is defined twice to indicate
// the encryption-direction (CS vs. SC)
//
#define RDP_SEC_LICENSE_ENCRYPT_CS 0x0200
#define RDP_SEC_LICENSE_ENCRYPT_SC 0x0200
/****************************************************************************/ /* Flags which define non-data packets */ /****************************************************************************/ #define RNS_SEC_NONDATA_PKT (RNS_SEC_EXCHANGE_PKT | \
RNS_SEC_INFO_PKT | \ RNS_SEC_LICENSE_PKT | \ RDP_SEC_REDIRECTION_PKT | \ RDP_SEC_REDIRECTION_PKT2 | \ RDP_SEC_REDIRECTION_PKT3)
/****************************************************************************/ /* RNS info packet flags */ /****************************************************************************/ #define RNS_INFO_MOUSE 0x0001
#define RNS_INFO_DISABLECTRLALTDEL 0x0002
#define RNS_INFO_DOUBLECLICKDETECT 0x0004
#define RNS_INFO_AUTOLOGON 0x0008
#define RNS_INFO_UNICODE 0x0010
#define RNS_INFO_MAXIMIZESHELL 0x0020
#define RNS_INFO_LOGONNOTIFY 0x0040
#define RNS_INFO_COMPRESSION 0x0080
#define RNS_INFO_ENABLEWINDOWSKEY 0x0100
#define RNS_INFO_REMOTECONSOLEAUDIO 0x2000
// See compress.h for type values that can appear in these 4 bits.
#define RNS_INFO_COMPR_TYPE_MASK 0x1E00
#define RNS_INFO_COMPR_TYPE_SHIFT 9
// When this flag is set, the client should only send encrypted packet to server
#define RNS_INFO_FORCE_ENCRYPTED_CS_PDU 0x4000
/****************************************************************************/ /* Structure: RNS_SECURITY_HEADER */ /* */ /* Description: Security header sent with all packets if encryption is in */ /* force. */ /* */ /* This header has the following structure: */ /* - flags (one or more of the RNS_SEC_ flags above) */ /****************************************************************************/ typedef struct tagRNS_SECURITY_HEADER { TSUINT16 flags; TSUINT16 flagsHi; } RNS_SECURITY_HEADER, FAR *PRNS_SECURITY_HEADER; typedef RNS_SECURITY_HEADER UNALIGNED FAR *PRNS_SECURITY_HEADER_UA;
/****************************************************************************/ /* Structure: RNS_SECURITY_HEADER */ /* */ /* Description: Security header sent with all packets if encryption is in */ /* force. */ /* */ /* This header has the following structure: */ /* - flags (one or more of the RNS_SEC_ flags above) */ /****************************************************************************/ typedef struct tagRNS_SECURITY_HEADER1 { TSUINT16 flags; TSUINT16 flagsHi; TSINT8 dataSignature[DATA_SIGNATURE_SIZE]; } RNS_SECURITY_HEADER1, FAR *PRNS_SECURITY_HEADER1; typedef RNS_SECURITY_HEADER1 UNALIGNED FAR *PRNS_SECURITY_HEADER1_UA;
/****************************************************************************/ /* Structure: RNS_SECURITY_HEADER */ /* */ /* Description: Security header sent with all packets if encryption is in */ /* force. */ /* */ /* This header has the following structure: */ /* - flags (one or more of the RNS_SEC_ flags above) */ /****************************************************************************/ typedef struct tagRNS_SECURITY_HEADER2 { TSUINT16 flags; TSUINT16 flagsHi; TSUINT16 length; // length of the this header
TSUINT8 version; #define TSFIPS_VERSION1 1
TSUINT8 padlen; // length of the padding in the encrypted data, has to be next to last
TSINT8 dataSignature[MAX_SIGN_SIZE]; } RNS_SECURITY_HEADER2, FAR *PRNS_SECURITY_HEADER2; typedef RNS_SECURITY_HEADER2 UNALIGNED FAR *PRNS_SECURITY_HEADER2_UA;
/****************************************************************************/ /* Structure: RNS_SECURITY_PACKET */ /* */ /* Description: Structure of security packet sent during security exchange */ /* */ /* The packet has the following structure */ /* - flags (RNS_SEC_EXCHANGE_PKT) */ /* - length length of data */ /* - variable length data */ /****************************************************************************/ typedef struct tagRNS_SECURITY_PACKET { TSUINT32 flags; TSUINT32 length; /* data follows */ } RNS_SECURITY_PACKET, FAR *PRNS_SECURITY_PACKET; typedef RNS_SECURITY_PACKET UNALIGNED FAR *PRNS_SECURITY_PACKET_UA;
/****************************************************************************/ // RDP_SERVER_REDIRECTION_PACKET
//
// Used to communicate a server redirection to the client.
/****************************************************************************/ typedef struct { // This corresponds to the security header flags field. We use this to
// contain the "flag" RDP_SEC_REDIRECTION_PKT.
TSUINT16 Flags;
// Overall length of this packet, including the header fields.
TSUINT16 Length;
TSUINT32 SessionID;
// Variable-length, zero-terminated Unicode string. No accompanying size
// field is given since the size can be determined from the length above.
// Up to TS_MAX_SERVERADDRESS_LENGTH Unicode characters in length (incl.
// terminating null).
TSUINT16 ServerAddress[1]; } RDP_SERVER_REDIRECTION_PACKET, FAR *PRDP_SERVER_REDIRECTION_PACKET;
typedef struct { // This corresponds to the security header flags field. We use this to
// contain the "flag" RDP_SEC_REDIRECTION_PKT.
TSUINT16 Flags;
// Overall length of this packet, including the header fields.
TSUINT16 Length;
TSUINT32 SessionID; TSUINT32 RedirFlags; #define TARGET_NET_ADDRESS 0x1
#define LOAD_BALANCE_INFO 0x2
// Variable-length. For each field, it has the form
// ULONG Length
// BYTE data[]
} RDP_SERVER_REDIRECTION_PACKET_V2, FAR *PRDP_SERVER_REDIRECTION_PACKET_V2;
typedef struct { // This corresponds to the security header flags field. We use this to
// contain the "flag" RDP_SEC_REDIRECTION_PKT.
TSUINT16 Flags;
// Overall length of this packet, including the header fields.
TSUINT16 Length;
TSUINT32 SessionID; TSUINT32 RedirFlags; #define TARGET_NET_ADDRESS 0x1
#define LOAD_BALANCE_INFO 0x2
#define LB_USERNAME 0x4
#define LB_DOMAIN 0x8
#define LB_PASSWORD 0x10
// In case the policy is set on the server side the client should not store
// the user name it gets from the V3 redirection packet in the default.rdp
// file
#define LB_DONTSTOREUSERNAME 0x20
#define LB_SMARTCARD_LOGON 0x40
// used to inform client the machine IP for later ARC use
#define LB_NOREDIRECT 0x80
// Variable-length. For each field, it has the form
// ULONG Length
// BYTE data[]
} RDP_SERVER_REDIRECTION_PACKET_V3, FAR *PRDP_SERVER_REDIRECTION_PACKET_V3;
//
// Time zone packet
//
#ifndef _RDP_TIME_ZONE_INFORMATION_
#define _RDP_TIME_ZONE_INFORMATION_
typedef struct _RDP_SYSTEMTIME { TSUINT16 wYear; TSUINT16 wMonth; TSUINT16 wDayOfWeek; TSUINT16 wDay; TSUINT16 wHour; TSUINT16 wMinute; TSUINT16 wSecond; TSUINT16 wMilliseconds; } RDP_SYSTEMTIME;
typedef struct _RDP_TIME_ZONE_INFORMATION { TSINT32 Bias; TSWCHAR StandardName[ 32 ]; RDP_SYSTEMTIME StandardDate; TSINT32 StandardBias; TSWCHAR DaylightName[ 32 ]; RDP_SYSTEMTIME DaylightDate; TSINT32 DaylightBias; } RDP_TIME_ZONE_INFORMATION; #endif //_RDP_TIME_ZONE_INFORMATION_
/****************************************************************************/ /* Structure: RNS_INFO_PACKET */ /* */ /* The packet has the following structure */ /* - fMouse Mouse enabled flag */ /* - fDisableCtrlAltDel CtrlAltDel disable state */ /* - fDoubleClickDetect Double click detect state */ /* - Domain Domain */ /* - UserName UserName */ /* - Password Password */ /****************************************************************************/ // The following fields are added post Win2000 Beta 3
// Future variable length fields can be appended to this struct in similar
// fashion
#define RNS_INFO_INVALID_SESSION_ID LOGONID_NONE
typedef struct tagRNS_EXTENDED_INFO_PACKET { TSUINT16 clientAddressFamily; TSUINT16 cbClientAddress; TSUINT8 clientAddress[TS_MAX_CLIENTADDRESS_LENGTH]; TSUINT16 cbClientDir; TSUINT8 clientDir[TS_MAX_CLIENTDIR_LENGTH]; //client time zone information
RDP_TIME_ZONE_INFORMATION clientTimeZone; TSUINT32 clientSessionId; //
// List of features to disable
// (flags are defined in the protocol independent header tsperf.h)
//
TSUINT32 performanceFlags; //
// Flags field
//
TSUINT16 cbAutoReconnectLen;
//
// Variable length portion. Only sent up if autoreconnection info
// is specified
//
TSUINT8 autoReconnectCookie[TS_MAX_AUTORECONNECT_LEN]; } RNS_EXTENDED_INFO_PACKET, FAR *PRNS_EXTENDED_INFO_PACKET; typedef RNS_EXTENDED_INFO_PACKET UNALIGNED FAR *PRNS_EXTENDED_INFO_PACKET_UA;
typedef struct tagRNS_INFO_PACKET { //
// In UNICODE we reuse the CodePage field to hold the active input
// locale identifier (formerly called keyboard layout)
//
TSUINT32 CodePage; TSUINT32 flags; TSUINT16 cbDomain; TSUINT16 cbUserName; TSUINT16 cbPassword; TSUINT16 cbAlternateShell; TSUINT16 cbWorkingDir; TSUINT8 Domain[TS_MAX_DOMAIN_LENGTH]; TSUINT8 UserName[TS_MAX_USERNAME_LENGTH]; TSUINT8 Password[TS_MAX_PASSWORD_LENGTH]; TSUINT8 AlternateShell[TS_MAX_ALTERNATESHELL_LENGTH]; TSUINT8 WorkingDir[TS_MAX_WORKINGDIR_LENGTH]; RNS_EXTENDED_INFO_PACKET ExtraInfo; } RNS_INFO_PACKET, FAR *PRNS_INFO_PACKET; typedef RNS_INFO_PACKET UNALIGNED FAR *PRNS_INFO_PACKET_UA;
/****************************************************************************/ /* User Data Structures */ /****************************************************************************/
/****************************************************************************/ /* Structure: RNS_UD_HEADER */ /* */ /* Header included in all user data structures */ /* - type one of the RNS_UD constants above */ /* - length length of data (including this header) */ /* - data one of the data structures below */ /****************************************************************************/ typedef struct tagRNS_UD_HEADER { TSUINT16 type; TSUINT16 length; } RNS_UD_HEADER; typedef RNS_UD_HEADER UNALIGNED FAR *PRNS_UD_HEADER;
/****************************************************************************/ /* Structure: RNS_UD_CS_CORE */ /* */ /* Client to Server core data */ /* - header standard header */ /* - version software version number */ /* - desktopWidth width of desktop in pels */ /* - desktopHeight height of desktop in pels */ /* - colorDepth color depth supported - see note below */ /* - SASSequence SAS sequence to use - one of the SAS constants above */ /* - keyboardLayout Keyboard layout / locale */ /* - clientName Name in Unicode characters */ /* - keyboardType ] */ /* - keyboardSubType ] FE stuff */ /* - keyboardFunctionKey ] */ /* - imeFileName ] */ /* - postBeta2ColorDepth Color depth supported - see note below */ /* - clientProductId */ /* - serialNumber */ #ifdef DC_HICOLOR
/* - highColorDepth preferred color depth (if not 8bpp) */ /* - supportedColorDepths high color depths supported by client */ #endif
/****************************************************************************/ #ifdef DC_HICOLOR
/****************************************************************************/ /* Notes on color depths: */ /* */ /* In the NT4 TSE development, beta 2 servers would only accept connections */ /* from clients requesting 8bpp - 4bpp support was only added later. To */ /* get around this problem while maintaining back compatibility with beta 2 */ /* servers, the postBeta2ColorDepth field was added which is recognised by */ /* servers later than beta 2 */ /* */ /* Later, support for high color depth (15, 16, and 24bpp) connections was */ /* added to the protocol. Again, for compatibility with old servers, new */ /* fields are required. The highColorDepth field contains the color depth */ /* the client would like (one of the RNS_UD_COLOR_XX values) while the */ /* supportedColorDepths field lists the high color depths the client is */ /* capable of supporting (using the RNS_UD_XXBPP_SUPPORT flags ORed */ /* together). */ /* */ /* Thus a new client on a 24bpp system will typically advertise the */ /* following color-related capabilities: */ /* */ /* colorDepth = RNS_UD_COLOR_8BPP - NT4 TSE Beta 2 servers look */ /* at this field */ /* postBeta2ColorDepth = RNS_UD_COLOR_8BPP - NT4 TSE and Win2000 servers */ /* examine this field */ /* highColorDepth = RNS_UD_COLOR_24BPP - post Win2000 (NT5.1?) */ /* supportedColorDepths = RNS_UD_24BPP_SUPPORT servers check these fields */ /* RNS_UD_16BPP_SUPPORT for preferred and supported */ /* RNS_UD_15BPP_SUPPORT color depths */ /* */ /****************************************************************************/ #else
/****************************************************************************/ /* A note on color depths: A beta2 Server rejects connections from a */ /* Client with a color depth of 4bpp. A released Server supports this. */ /* Therefore a new field, postBeta2ColorDepth, is added, which is */ /* recognised by released Servers and can take the value 4bpp. Beta2 */ /* Servers continue to check colorDepth only. */ /****************************************************************************/ #endif
typedef struct tagRNS_UD_CS_CORE { RNS_UD_HEADER header; TSUINT32 version; TSUINT16 desktopWidth; TSUINT16 desktopHeight; TSUINT16 colorDepth; TSUINT16 SASSequence; TSUINT32 keyboardLayout; TSUINT32 clientBuild; // Max size same as MAX_COMPUTERNAME_LENGTH in windows.h.
#define RNS_UD_CS_CLIENTNAME_LENGTH 15
TSUINT16 clientName[RNS_UD_CS_CLIENTNAME_LENGTH + 1]; TSUINT32 keyboardType; TSUINT32 keyboardSubType; TSUINT32 keyboardFunctionKey; TSUINT16 imeFileName[TS_MAX_IMEFILENAME]; // Unicode string, ASCII code only.
TSUINT16 postBeta2ColorDepth; TSUINT16 clientProductId; TSUINT32 serialNumber; #ifdef DC_HICOLOR
TSUINT16 highColorDepth; TSUINT16 supportedColorDepths; #endif
//Used to specify early capability info
//e.g support for error info PDU has to be
//setup before licensing (which unfortunately
//happens after caps negotiation)
#define RNS_UD_CS_SUPPORT_ERRINFO_PDU 0x0001
TSUINT16 earlyCapabilityFlags; //fix shadow loop detection
//meherm 02/09/2001
#define CLIENT_PRODUCT_ID_LENGTH 32
TSUINT16 clientDigProductId[CLIENT_PRODUCT_ID_LENGTH]; } RNS_UD_CS_CORE; typedef RNS_UD_CS_CORE UNALIGNED FAR *PRNS_UD_CS_CORE; typedef PRNS_UD_CS_CORE UNALIGNED FAR *PPRNS_UD_CS_CORE;
// Original size structure used by shadowing code - do not use!
typedef struct tagRNS_UD_CS_CORE_V0 { RNS_UD_HEADER header; TSUINT32 version; TSUINT16 desktopWidth; TSUINT16 desktopHeight; TSUINT16 colorDepth; TSUINT16 SASSequence; TSUINT32 keyboardLayout; TSUINT32 clientBuild; // Max size same as MAX_COMPUTERNAME_LENGTH in windows.h.
#define RNS_UD_CS_CLIENTNAME_LENGTH 15
TSUINT16 clientName[RNS_UD_CS_CLIENTNAME_LENGTH + 1]; TSUINT32 keyboardType; TSUINT32 keyboardSubType; TSUINT32 keyboardFunctionKey; TSUINT16 imeFileName[TS_MAX_IMEFILENAME]; // Unicode string, ASCII code only.
TSUINT16 postBeta2ColorDepth; TSUINT16 pad; } RNS_UD_CS_CORE_V0, FAR *PRNS_UD_CS_CORE_V0; typedef PRNS_UD_CS_CORE_V0 FAR *PPRNS_UD_CS_CORE_V0;
// Intermediate size structure used by shadowing code - do not use!
typedef struct tagRNS_UD_CS_CORE_V1 { RNS_UD_HEADER header; TSUINT32 version; TSUINT16 desktopWidth; TSUINT16 desktopHeight; TSUINT16 colorDepth; TSUINT16 SASSequence; TSUINT32 keyboardLayout; TSUINT32 clientBuild; // Max size same as MAX_COMPUTERNAME_LENGTH in windows.h.
#define RNS_UD_CS_CLIENTNAME_LENGTH 15
TSUINT16 clientName[RNS_UD_CS_CLIENTNAME_LENGTH + 1]; TSUINT32 keyboardType; TSUINT32 keyboardSubType; TSUINT32 keyboardFunctionKey; TSUINT16 imeFileName[TS_MAX_IMEFILENAME]; // Unicode string, ASCII code only.
TSUINT16 postBeta2ColorDepth; TSUINT16 clientProductId; TSUINT32 serialNumber; } RNS_UD_CS_CORE_V1, FAR *PRNS_UD_CS_CORE_V1; typedef PRNS_UD_CS_CORE_V1 FAR *PPRNS_UD_CS_CORE_V1;
/****************************************************************************/ /* Structure: RNS_UD_CS_SEC */ /* */ /* Client to Server security data */ /* - header standard header */ /* - encryptionMethods encryption method supported by the client */ /* - extEncryptionMethods used by the French Locale system for backward */ /* compatibility. */ /****************************************************************************/ typedef struct tagRNS_UD_CS_SEC { RNS_UD_HEADER header; TSUINT32 encryptionMethods; TSUINT32 extEncryptionMethods; } RNS_UD_CS_SEC; typedef RNS_UD_CS_SEC UNALIGNED FAR *PRNS_UD_CS_SEC; typedef PRNS_UD_CS_SEC UNALIGNED FAR *PPRNS_UD_CS_SEC;
// Original size structure used by shadowing code - do not use!
typedef struct tagRNS_UD_CS_SEC_V0 { RNS_UD_HEADER header; TSUINT32 encryptionMethods; } RNS_UD_CS_SEC_V0, RNS_UD_CS_SEC_V1, FAR *PRNS_UD_CS_SEC_V0, FAR *PRNS_UD_CS_SEC_V1; typedef PRNS_UD_CS_SEC_V0 FAR *PPRNS_UD_CS_SEC_V0;
/****************************************************************************/ /* Structure: RNS_UD_CS_NET */ /* */ /* Description: Client to Server network data */ /* - header standard header */ /* - channelCount number of channel names */ /* - channel names */ /****************************************************************************/ typedef struct tagRNS_UD_CS_NET { RNS_UD_HEADER header; TSUINT32 channelCount; /* array of CHANNEL_DEF structures follows */ } RNS_UD_CS_NET; typedef RNS_UD_CS_NET UNALIGNED FAR *PRNS_UD_CS_NET; typedef PRNS_UD_CS_NET UNALIGNED FAR *PPRNS_UD_CS_NET;
/****************************************************************************/ // TS_UD_CS_CLUSTER
//
// Client-to-server information for server clustering-aware clients.
/****************************************************************************/
// Flag values.
// Client supports basic redirection.
#define TS_CLUSTER_REDIRECTION_SUPPORTED 0x01
// Bits 2..5 represent the version for the PDU
#define TS_CLUSTER_REDIRECTION_VERSION 0x3C
#define TS_CLUSTER_REDIRECTION_VERSION1 0x0
#define TS_CLUSTER_REDIRECTION_VERSION2 0x1
#define TS_CLUSTER_REDIRECTION_VERSION3 0x2
#define TS_CLUSTER_REDIRECTION_VERSION4 0x3
// Set if the client has already been redirected and the SessionID field
// in the struct contains a valid value.
#define TS_CLUSTER_REDIRECTED_SESSIONID_FIELD_VALID 0x02
#define TS_CLUSTER_REDIRECTED_SMARTCARD 0x40
typedef struct { RNS_UD_HEADER header; TSUINT32 Flags; TSUINT32 RedirectedSessionID; } TS_UD_CS_CLUSTER; typedef TS_UD_CS_CLUSTER UNALIGNED FAR *PTS_UD_CS_CLUSTER;
/****************************************************************************/ /* Structure: RNS_UD_SC_CORE */ /* */ /* Server to Client core data */ /* - header standard header */ /* - version software version number */ /****************************************************************************/ typedef struct tagRNS_UD_SC_CORE { RNS_UD_HEADER header; TSUINT32 version; } RNS_UD_SC_CORE, FAR *PRNS_UD_SC_CORE;
/****************************************************************************/ /* Structure: RNS_UD_SC_SEC */ /* */ /* Server to Client security data */ /* - header standard header */ /* - encryptionMethod encryption method selected by the server */ /* - encryptionLevel encryption level supported by the server */ /****************************************************************************/ typedef struct tagRNS_UD_SC_SEC { RNS_UD_HEADER header; TSUINT32 encryptionMethod; TSUINT32 encryptionLevel; } RNS_UD_SC_SEC, FAR *PRNS_UD_SC_SEC, FAR * FAR *PPRNS_UD_SC_SEC;
/****************************************************************************/ /* Structure: RNS_UD_SC_SEC1 */ /* */ /* Server to Client security data */ /* - header standard header */ /* - encryptionMethod encryption method selected by the server */ /* - serverRandomLen length of the server random */ /* - serverCertLen server certificate length */ /* - server random data */ /* - server certificate data */ /****************************************************************************/ typedef struct tagRNS_UD_SC_SEC1 { RNS_UD_HEADER header; TSUINT32 encryptionMethod; TSUINT32 encryptionLevel; TSUINT32 serverRandomLen; TSUINT32 serverCertLen; /* server random key data follows */ /* server certificate data follows */ } RNS_UD_SC_SEC1, FAR *PRNS_UD_SC_SEC1;
/****************************************************************************/ /* Structure: RNS_UD_SC_NET */ /* */ /* Server to Client network data */ /* - header standard header */ /* - MCSChannelID T128 MCS channel ID to use */ /* - pad unused */ /* - channelCount number of channels */ /* - channel IDs */ /****************************************************************************/ typedef struct tagRNS_UD_SC_NET { RNS_UD_HEADER header; TSUINT16 MCSChannelID; TSUINT16 channelCount; /* was pad, but always 0, in release 1 */ /* array of 2-byte integer MCS channel IDs follows (0 = unknown) */ } RNS_UD_SC_NET, FAR *PRNS_UD_SC_NET, FAR * FAR *PPRNS_UD_SC_NET;
/****************************************************************************/ /* Virtual channel protocol flags */ /* Header flags (internal protocol use only) */ /****************************************************************************/ #define CHANNEL_FLAG_SHOW_PROTOCOL 0x10
#define CHANNEL_FLAG_SUSPEND 0x20
#define CHANNEL_FLAG_RESUME 0x40
#define CHANNEL_FLAG_SHADOW_PERSISTENT 0x80
#endif /* _H_AT120EX */
|