Commit 7a12087b authored by dscho's avatar dscho

add definitions from other VNC implementations

parent 7101d427
......@@ -174,6 +174,14 @@ typedef struct {
#define sz_rfbPixelFormat 16
/* UltraVNC: Color settings values */
#define rfbPFFullColors 0
#define rfbPF256Colors 1
#define rfbPF64Colors 2
#define rfbPF8Colors 3
#define rfbPF8GreyColors 4
#define rfbPF4GreyColors 5
#define rfbPF2GreyColors 6
/*****************************************************************************
......@@ -229,6 +237,14 @@ typedef char rfbProtocolVersionMsg[13]; /* allow extra byte for null */
#define rfbNoAuth 1
#define rfbVncAuth 2
#define rfbRA2 5
#define rfbRA2ne 6
#define rfbSSPI 7
#define rfbSSPIne 8
#define rfbTight 16
#define rfbUltra 17
#define rfbTLS 18
/*
* rfbConnFailed: For some reason the connection failed (e.g. the server
* cannot support the desired protocol version). This is
......@@ -319,6 +335,10 @@ typedef struct {
#define rfbSetColourMapEntries 1
#define rfbBell 2
#define rfbServerCutText 3
/* Modif sf@2002 */
#define rfbResizeFrameBuffer 4
#define rfbKeyFrameUpdate 5
#define rfbPalmVNCReSizeFrameBuffer 0xF
#ifdef LIBVNCSERVER_BACKCHANNEL
#define rfbBackChannel 15
#endif
......@@ -332,6 +352,20 @@ typedef struct {
#define rfbKeyEvent 4
#define rfbPointerEvent 5
#define rfbClientCutText 6
/* Modif sf@2002 - actually bidirectionnal */
#define rfbFileTransfer 7
/* Modif sf@2002 */
#define rfbSetScale 8
/* Modif rdv@2002 */
#define rfbSetServerInput 9
/* Modif rdv@2002 */
#define rfbSetSW 10
/* Modif sf@2002 - TextChat - Bidirectionnal */
#define rfbTextChat 11
/* Modif cs@2005 */
#define rfbKeyFrameRequest 12
/* PalmVNC 1.4 & 2.0 SetScale Factor message */
#define rfbPalmVNCSetScaleFactor 0xF
......@@ -360,6 +394,20 @@ typedef struct {
#define rfbEncodingZRLE 16
#endif
/* Cache & XOR-Zlib - rdv@2002 */
#define rfbEncodingCache 0xFFFF0000
#define rfbEncodingCacheEnable 0xFFFF0001
#ifdef LIBVNCSERVER_HAVE_LIBZ
#define rfbEncodingXOR_Zlib 0xFFFF0002
#define rfbEncodingXORMonoColor_Zlib 0xFFFF0003
#define rfbEncodingXORMultiColor_Zlib 0xFFFF0004
#endif
#define rfbEncodingSolidColor 0xFFFF0005
#define rfbEncodingXOREnable 0xFFFF0006
#define rfbEncodingCacheZip 0xFFFF0007
#define rfbEncodingSolMonoZip 0xFFFF0008
#define rfbEncodingUltraZip 0xFFFF0009
/*
* Special encoding numbers:
* 0xFFFFFF00 .. 0xFFFFFF0F -- encoding-specific compression levels;
......@@ -425,6 +473,18 @@ typedef struct {
#define sz_rfbFramebufferUpdateMsg 4
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* KeyFrameUpdate - Acknowledgment of a key frame request, it tells the client
* that the next update received will be a key frame.
*/
typedef struct {
uint8_t type;
} rfbKeyFrameUpdateMsg;
#define sz_rfbKeyFrameUpdateMsg 1
/*
* Each rectangle of pixel data consists of a header describing the position
* and size of the rectangle and a type word describing the encoding of the
......@@ -755,6 +815,21 @@ typedef struct {
#define rfbZRLETileHeight 64
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* ZLIBHEX - zlib compressed Hextile Encoding. Essentially, this is the
* hextile encoding with zlib compression on the tiles that can not be
* efficiently encoded with one of the other hextile subencodings. The
* new zlib subencoding uses two bytes to specify the length of the
* compressed tile and then the compressed data follows. As with the
* raw sub-encoding, the zlib subencoding invalidates the other
* values, if they are also set.
*/
#define rfbHextileZlibRaw (1 << 5)
#define rfbHextileZlibHex (1 << 6)
#define rfbHextileZlibMono (1 << 7)
/*-----------------------------------------------------------------------------
* SetColourMapEntries - these messages are only sent if the pixel
* format uses a "colour map" (i.e. trueColour false) and the client has not
......@@ -811,6 +886,143 @@ typedef rfbServerCutTextMsg rfbBackChannelMsg;
#endif
/*-----------------------------------------------------------------------------
* // Modif sf@2002
* FileTransferMsg - The client sends FileTransfer message.
* Bidirectional message - Files can be sent from client to server & vice versa
*/
typedef struct _rfbFileTransferMsg {
uint8_t type; /* always rfbFileTransfer */
uint8_t contentType; /* See defines below */
uint16_t contentParam;/* Other possible content classification (Dir or File name, etc..) */
uint32_t size; /* FileSize or packet index or error or other */
/* uint32_t sizeH; // Additional 32Bits params to handle big values. Only for V2 (we want backward compatibility between all V1 versions) */
uint32_t length;
/* followed by data char text[length] */
} rfbFileTransferMsg;
#define sz_rfbFileTransferMsg 12
#define rfbFileTransferVersion 2 /* v1 is the old FT version ( <= 1.0.0 RC18 versions) */
/* FileTransfer Content types and Params defines */
#define rfbDirContentRequest 1 /* Client asks for the content of a given Server directory */
#define rfbDirPacket 2 /* Full directory name or full file name. */
/* Null content means end of Directory */
#define rfbFileTransferRequest 3 /* Client asks the server for the transfer of a given file */
#define rfbFileHeader 4 /* First packet of a file transfer, containing file's features */
#define rfbFilePacket 5 /* One chunk of the file */
#define rfbEndOfFile 6 /* End of file transfer (the file has been received or error) */
#define rfbAbortFileTransfer 7 /* The file transfer must be aborted, whatever the state */
#define rfbFileTransferOffer 8 /* The client offers to send a file to the server */
#define rfbFileAcceptHeader 9 /* The server accepts or rejects the file */
#define rfbCommand 10 /* The Client sends a simple command (File Delete, Dir create etc...) */
#define rfbCommandReturn 11 /* The Client receives the server's answer about a simple command */
#define rfbFileChecksums 12 /* The zipped checksums of the destination file (Delta Transfer) */
#define rfbFileTransferAccess 14 /* Request FileTransfer authorization */
/* rfbDirContentRequest client Request - content params */
#define rfbRDirContent 1 /* Request a Server Directory contents */
#define rfbRDrivesList 2 /* Request the server's drives list */
#define rfbRDirRecursiveList 3 /* Request a server directory content recursive sorted list */
#define rfbRDirRecursiveSize 4 /* Request a server directory content recursive size */
/* rfbDirPacket & rfbCommandReturn server Answer - content params */
#define rfbADirectory 1 /* Reception of a directory name */
#define rfbAFile 2 /* Reception of a file name */
#define rfbADrivesList 3 /* Reception of a list of drives */
#define rfbADirCreate 4 /* Response to a create dir command */
#define rfbADirDelete 5 /* Response to a delete dir command */
#define rfbAFileCreate 6 /* Response to a create file command */
#define rfbAFileDelete 7 /* Response to a delete file command */
#define rfbAFileRename 8 /* Response to a rename file command */
#define rfbADirRename 9 /* Response to a rename dir command */
#define rfbADirRecursiveListItem 10
#define rfbADirRecursiveSize 11
/* rfbCommand Command - content params */
#define rfbCDirCreate 1 /* Request the server to create the given directory */
#define rfbCDirDelete 2 /* Request the server to delete the given directory */
#define rfbCFileCreate 3 /* Request the server to create the given file */
#define rfbCFileDelete 4 /* Request the server to delete the given file */
#define rfbCFileRename 5 /* Request the server to rename the given file */
#define rfbCDirRename 6 /* Request the server to rename the given directory */
/* Errors - content params or "size" field */
#define rfbRErrorUnknownCmd 1 /* Unknown FileTransfer command. */
#define rfbRErrorCmd 0xFFFFFFFF/* Error when a command fails on remote side (ret in "size" field) */
#define sz_rfbBlockSize 8192 /* Size of a File Transfer packet (before compression) */
#define rfbZipDirectoryPrefix "!UVNCDIR-\0" /* Transfered directory are zipped in a file with this prefix. Must end with "-" */
#define sz_rfbZipDirectoryPrefix 9
#define rfbDirPrefix "[ "
#define rfbDirSuffix " ]"
/*-----------------------------------------------------------------------------
* Modif sf@2002
* TextChatMsg - Utilized to order the TextChat mode on server or client
* Bidirectional message
*/
typedef struct _rfbTextChatMsg {
uint8_t type; /* always rfbTextChat */
uint8_t pad1; /* Could be used later as an additionnal param */
uint16_t pad2; /* Could be used later as text offset, for instance */
uint32_t length; /* Specific values for Open, close, finished (-1, -2, -3) */
/* followed by char text[length] */
} rfbTextChatMsg;
#define sz_rfbTextChatMsg 8
#define rfbTextMaxSize 4096
#define rfbTextChatOpen 0xFFFFFFFF
#define rfbTextChatClose 0xFFFFFFFE
#define rfbTextChatFinished 0xFFFFFFFD
/*-----------------------------------------------------------------------------
* Modif sf@2002
* ResizeFrameBuffer - The Client must change the size of its framebuffer
*/
typedef struct _rfbResizeFrameBufferMsg {
uint8_t type; /* always rfbResizeFrameBuffer */
uint8_t pad1;
uint16_t framebufferWidth; /* FrameBuffer width */
uint16_t framebufferHeigth; /* FrameBuffer height */
} rfbResizeFrameBufferMsg;
#define sz_rfbResizeFrameBufferMsg 6
/*-----------------------------------------------------------------------------
* Copyright (C) 2001 Harakan Software
* PalmVNC 1.4 & 2.? ResizeFrameBuffer message
* ReSizeFrameBuffer - tell the RFB client to alter its framebuffer, either
* due to a resize of the server desktop or a client-requested scaling factor.
* The pixel format remains unchanged.
*/
typedef struct {
uint8_t type; /* always rfbReSizeFrameBuffer */
uint8_t pad1;
uint16_t desktop_w; /* Desktop width */
uint16_t desktop_h; /* Desktop height */
uint16_t buffer_w; /* FrameBuffer width */
uint16_t buffer_h; /* Framebuffer height */
uint16_t pad2;
} rfbPalmVNCReSizeFrameBufferMsg;
#define sz_rfbPalmVNCReSizeFrameBufferMsg (12)
/*-----------------------------------------------------------------------------
* Union of all server->client messages.
*/
......@@ -821,10 +1033,29 @@ typedef union {
rfbSetColourMapEntriesMsg scme;
rfbBellMsg b;
rfbServerCutTextMsg sct;
rfbResizeFrameBufferMsg rsfb;
rfbPalmVNCReSizeFrameBufferMsg prsfb;
rfbFileTransferMsg ft;
rfbTextChatMsg tc;
} rfbServerToClientMsg;
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* RDV Cache Encoding.
* special is not used at this point, can be used to reset cache or other specials
* just put it to make sure we don't have to change the encoding again.
*/
typedef struct {
uint16_t special;
} rfbCacheRect;
#define sz_rfbCacheRect 2
/*****************************************************************************
*
* Message definitions (client -> server)
......@@ -957,6 +1188,11 @@ typedef struct {
#define rfbButton1Mask 1
#define rfbButton2Mask 2
#define rfbButton3Mask 4
#define rfbButton4Mask 8
#define rfbButton5Mask 16
/* RealVNC 335 method */
#define rfbWheelUpMask rfbButton4Mask
#define rfbWheelDownMask rfbButton5Mask
#define sz_rfbPointerEventMsg 6
......@@ -978,6 +1214,64 @@ typedef struct {
/*-----------------------------------------------------------------------------
* sf@2002 - Set Server Scale
* SetServerScale - Server must change the scale of the client buffer.
*/
typedef struct _rfbSetScaleMsg {
uint8_t type; /* always rfbSetScale */
uint8_t scale; /* Scale value 1<sv<n */
uint16_t pad;
} rfbSetScaleMsg;
#define sz_rfbSetScaleMsg 4
/*-----------------------------------------------------------------------------
* Copyright (C) 2001 Harakan Software
* PalmVNC 1.4 & 2.? SetScale Factor message
* SetScaleFactor - tell the RFB server to alter the scale factor for the
* client buffer.
*/
typedef struct {
uint8_t type; /* always rfbSetScaleFactor */
uint8_t scale; /* Scale factor (positive non-zero integer) */
uint16_t pad2;
} rfbPalmVNCSetScaleFactorMsg;
#define sz_rfbPalmVNCSetScaleFactorMsg (4)
/*-----------------------------------------------------------------------------
* rdv@2002 - Set input status
* SetServerInput - Server input is dis/enabled
*/
typedef struct _rfbSetServerInputMsg {
uint8_t type; /* always rfbSetScale */
uint8_t status; /* Scale value 1<sv<n */
uint16_t pad;
} rfbSetServerInputMsg;
#define sz_rfbSetServerInputMsg 4
/*-----------------------------------------------------------------------------
* rdv@2002 - Set SW
* SetSW - Server SW/full desktop
*/
typedef struct _rfbSetSWMsg {
uint8_t type; /* always rfbSetSW */
uint8_t status;
uint16_t x;
uint16_t y;
} rfbSetSWMsg;
#define sz_rfbSetSWMsg 6
/*-----------------------------------------------------------------------------
* Union of all client->server messages.
*/
......@@ -991,6 +1285,12 @@ typedef union {
rfbKeyEventMsg ke;
rfbPointerEventMsg pe;
rfbClientCutTextMsg cct;
rfbSetScaleMsg ssc;
rfbPalmVNCSetScaleFactorMsg pssf;
rfbSetServerInputMsg sim;
rfbFileTransferMsg ft;
rfbSetSWMsg sw;
rfbTextChatMsg tc;
} rfbClientToServerMsg;
/*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment