LibVNCServer/LibVNCClient
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
rfb.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <rfb/rfbproto.h>
#include <rfb/threading.h>
+ Include dependency graph for rfb.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rfbColourMap
 
struct  rfbSecurityHandler
 Security handling (RFB protocol version 3.7) More...
 
struct  rfbProtocolExtension
 Protocol extension handling. More...
 
struct  rfbExtensionData
 
struct  rfbScreenInfoPtr
 Per-screen (framebuffer) structure. More...
 
struct  rfbFileTransferData
 
struct  rfbStatList
 
struct  rfbClientPtr
 
struct  rfbCursorPtr
 
struct  rfbFontDataPtr
 

Macros

#define rfbInitServer   rfbInitServerWithoutPthreadsAndZRLE
 
#define UPDATE_BUF_SIZE   32768
 UPDATE_BUF_SIZE must be big enough to send at least one whole line of the framebuffer. More...
 
#define FB_UPDATE_PENDING(cl)
 This macro is used to test whether there is a framebuffer update needing to be sent to the client. More...
 
#define Swap16(s)   ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff))
 
#define Swap24(l)
 
#define Swap32(l)
 
#define Swap16IfLE(s)   (rfbEndianTest ? Swap16(s) : (s))
 
#define Swap24IfLE(l)   (rfbEndianTest ? Swap24(l) : (l))
 
#define Swap32IfLE(l)   (rfbEndianTest ? Swap32(l) : (l))
 
#define Swap16IfBE(s)   (rfbEndianTest ? (s) : Swap16(s))
 
#define Swap24IfBE(l)   (rfbEndianTest ? (l) : Swap24(l))
 
#define Swap32IfBE(l)   (rfbEndianTest ? (l) : Swap32(l))
 
#define ULTRA_MAX_RECT_SIZE   (128*256)
 
#define ULTRA_MAX_SIZE(min)
 

Typedefs

typedef void(* rfbKbdAddEventProcPtr) (rfbBool down, rfbKeySym keySym, struct _rfbClientRec *cl)
 
typedef void(* rfbKbdReleaseAllKeysProcPtr) (struct _rfbClientRec *cl)
 
typedef void(* rfbPtrAddEventProcPtr) (int buttonMask, int x, int y, struct _rfbClientRec *cl)
 
typedef void(* rfbSetXCutTextProcPtr) (char *str, int len, struct _rfbClientRec *cl)
 
typedef rfbBool(* rfbSetTranslateFunctionProcPtr) (struct _rfbClientRec *cl)
 
typedef rfbBool(* rfbPasswordCheckProcPtr) (struct _rfbClientRec *cl, const char *encryptedPassWord, int len)
 
typedef enum rfbNewClientAction(* rfbNewClientHookPtr) (struct _rfbClientRec *cl)
 
typedef void(* rfbDisplayHookPtr) (struct _rfbClientRec *cl)
 
typedef void(* rfbDisplayFinishedHookPtr) (struct _rfbClientRec *cl, int result)
 
typedef int(* rfbGetKeyboardLedStateHookPtr) (struct _rfbScreenInfo *screen)
 support the capability to view the caps/num/scroll states of the X server More...
 
typedef rfbBool(* rfbXvpHookPtr) (struct _rfbClientRec *cl, uint8_t, uint8_t)
 
typedef int(* rfbSetDesktopSizeHookPtr) (int width, int height, int numScreens, struct rfbExtDesktopScreen *extDesktopScreens, struct _rfbClientRec *cl)
 
typedef int(* rfbNumberOfExtDesktopScreensPtr) (struct _rfbClientRec *cl)
 
typedef rfbBool(* rfbGetExtDesktopScreenPtr) (int seqnumber, struct rfbExtDesktopScreen *extDesktopScreen, struct _rfbClientRec *cl)
 
typedef void(* rfbSetSingleWindowProcPtr) (struct _rfbClientRec *cl, int x, int y)
 If x==1 and y==1 then set the whole display else find the window underneath x and y and set the framebuffer to the dimensions of that window. More...
 
typedef void(* rfbSetServerInputProcPtr) (struct _rfbClientRec *cl, int status)
 Status determines if the X11 server permits input from the local user status==0 or 1. More...
 
typedef int(* rfbFileTransferPermitted) (struct _rfbClientRec *cl)
 Permit the server to allow or deny filetransfers. More...
 
typedef void(* rfbSetTextChat) (struct _rfbClientRec *cl, int length, char *string)
 Handle the textchat messages. More...
 
typedef void(* rfbTranslateFnType) (char *table, rfbPixelFormat *in, rfbPixelFormat *out, char *iptr, char *optr, int bytesBetweenInputLines, int width, int height)
 rfbTranslateFnType is the type of translation functions. More...
 
typedef struct sraRegionsraRegionPtr
 
typedef void(* ClientGoneHookPtr) (struct _rfbClientRec *cl)
 
typedef void(* ClientFramebufferUpdateRequestHookPtr) (struct _rfbClientRec *cl, rfbFramebufferUpdateRequestMsg *furMsg)
 
typedef struct _rfbSslCtx rfbSslCtx
 
typedef struct _wsCtx wsCtx
 
typedef struct rfbClientIterator * rfbClientIteratorPtr
 
typedef void(* SelectionChangedHookPtr) (int _index)
 this opens a modal select box. More...
 
typedef void(* rfbLogProc) (const char *format,...)
 

Enumerations

enum  rfbNewClientAction { RFB_CLIENT_ACCEPT , RFB_CLIENT_ON_HOLD , RFB_CLIENT_REFUSE }
 
enum  rfbSocketState { RFB_SOCKET_INIT , RFB_SOCKET_READY , RFB_SOCKET_SHUTDOWN }
 

Functions

void rfbInitSockets (rfbScreenInfoPtr rfbScreen)
 
void rfbShutdownSockets (rfbScreenInfoPtr rfbScreen)
 
void rfbDisconnectUDPSock (rfbScreenInfoPtr rfbScreen)
 
void rfbCloseClient (rfbClientPtr cl)
 
int rfbReadExact (rfbClientPtr cl, char *buf, int len)
 
int rfbReadExactTimeout (rfbClientPtr cl, char *buf, int len, int timeout)
 
int rfbPeekExactTimeout (rfbClientPtr cl, char *buf, int len, int timeout)
 
int rfbWriteExact (rfbClientPtr cl, const char *buf, int len)
 
int rfbCheckFds (rfbScreenInfoPtr rfbScreen, long usec)
 
rfbSocket rfbConnect (rfbScreenInfoPtr rfbScreen, char *host, int port)
 
rfbSocket rfbConnectToTcpAddr (char *host, int port)
 
rfbSocket rfbListenOnTCPPort (int port, in_addr_t iface)
 
rfbSocket rfbListenOnTCP6Port (int port, const char *iface)
 
rfbSocket rfbListenOnUDPPort (int port, in_addr_t iface)
 
int rfbStringToAddr (char *string, in_addr_t *addr)
 
rfbBool rfbSetNonBlocking (rfbSocket sock)
 
void rfbClientListInit (rfbScreenInfoPtr rfbScreen)
 
rfbClientIteratorPtr rfbGetClientIterator (rfbScreenInfoPtr rfbScreen)
 
rfbClientPtr rfbClientIteratorNext (rfbClientIteratorPtr iterator)
 
void rfbReleaseClientIterator (rfbClientIteratorPtr iterator)
 
void rfbIncrClientRef (rfbClientPtr cl)
 
void rfbDecrClientRef (rfbClientPtr cl)
 
void rfbNewClientConnection (rfbScreenInfoPtr rfbScreen, rfbSocket sock)
 
rfbClientPtr rfbNewClient (rfbScreenInfoPtr rfbScreen, rfbSocket sock)
 
rfbClientPtr rfbNewUDPClient (rfbScreenInfoPtr rfbScreen)
 
rfbClientPtr rfbReverseConnection (rfbScreenInfoPtr rfbScreen, char *host, int port)
 
void rfbClientConnectionGone (rfbClientPtr cl)
 
void rfbProcessClientMessage (rfbClientPtr cl)
 
void rfbClientConnFailed (rfbClientPtr cl, const char *reason)
 
void rfbNewUDPConnection (rfbScreenInfoPtr rfbScreen, rfbSocket sock)
 
void rfbProcessUDPInput (rfbScreenInfoPtr rfbScreen)
 
rfbBool rfbSendFramebufferUpdate (rfbClientPtr cl, sraRegionPtr updateRegion)
 
rfbBool rfbSendRectEncodingRaw (rfbClientPtr cl, int x, int y, int w, int h)
 
rfbBool rfbSendUpdateBuf (rfbClientPtr cl)
 
void rfbSendServerCutText (rfbScreenInfoPtr rfbScreen, char *str, int len)
 
rfbBool rfbSendCopyRegion (rfbClientPtr cl, sraRegionPtr reg, int dx, int dy)
 
rfbBool rfbSendLastRectMarker (rfbClientPtr cl)
 
rfbBool rfbSendNewFBSize (rfbClientPtr cl, int w, int h)
 
rfbBool rfbSendExtDesktopSize (rfbClientPtr cl, int w, int h)
 
rfbBool rfbSendSetColourMapEntries (rfbClientPtr cl, int firstColour, int nColours)
 
void rfbSendBell (rfbScreenInfoPtr rfbScreen)
 
char * rfbProcessFileTransferReadBuffer (rfbClientPtr cl, uint32_t length)
 
rfbBool rfbSendFileTransferChunk (rfbClientPtr cl)
 
rfbBool rfbSendDirContent (rfbClientPtr cl, int length, char *buffer)
 
rfbBool rfbSendFileTransferMessage (rfbClientPtr cl, uint8_t contentType, uint8_t contentParam, uint32_t size, uint32_t length, const char *buffer)
 
rfbBool rfbProcessFileTransfer (rfbClientPtr cl, uint8_t contentType, uint8_t contentParam, uint32_t size, uint32_t length)
 
void rfbGotXCutText (rfbScreenInfoPtr rfbScreen, char *str, int len)
 
void rfbTranslateNone (char *table, rfbPixelFormat *in, rfbPixelFormat *out, char *iptr, char *optr, int bytesBetweenInputLines, int width, int height)
 
rfbBool rfbSetTranslateFunction (rfbClientPtr cl)
 
rfbBool rfbSetClientColourMap (rfbClientPtr cl, int firstColour, int nColours)
 
void rfbSetClientColourMaps (rfbScreenInfoPtr rfbScreen, int firstColour, int nColours)
 
void rfbHttpInitSockets (rfbScreenInfoPtr rfbScreen)
 
void rfbHttpShutdownSockets (rfbScreenInfoPtr rfbScreen)
 
void rfbHttpCheckFds (rfbScreenInfoPtr rfbScreen)
 
void rfbAuthNewClient (rfbClientPtr cl)
 
void rfbProcessClientSecurityType (rfbClientPtr cl)
 
void rfbAuthProcessClientMessage (rfbClientPtr cl)
 
void rfbRegisterSecurityHandler (rfbSecurityHandler *handler)
 
void rfbUnregisterSecurityHandler (rfbSecurityHandler *handler)
 
rfbBool rfbSendRectEncodingRRE (rfbClientPtr cl, int x, int y, int w, int h)
 
rfbBool rfbSendRectEncodingCoRRE (rfbClientPtr cl, int x, int y, int w, int h)
 
rfbBool rfbSendRectEncodingHextile (rfbClientPtr cl, int x, int y, int w, int h)
 
rfbBool rfbSendRectEncodingUltra (rfbClientPtr cl, int x, int y, int w, int h)
 
rfbBool rfbSendCursorShape (rfbClientPtr cl)
 
rfbBool rfbSendCursorPos (rfbClientPtr cl)
 
void rfbConvertLSBCursorBitmapOrMask (int width, int height, unsigned char *bitmap)
 
rfbCursorPtr rfbMakeXCursor (int width, int height, char *cursorString, char *maskString)
 
char * rfbMakeMaskForXCursor (int width, int height, char *cursorString)
 
char * rfbMakeMaskFromAlphaSource (int width, int height, unsigned char *alphaSource)
 
void rfbMakeXCursorFromRichCursor (rfbScreenInfoPtr rfbScreen, rfbCursorPtr cursor)
 
void rfbMakeRichCursorFromXCursor (rfbScreenInfoPtr rfbScreen, rfbCursorPtr cursor)
 
void rfbFreeCursor (rfbCursorPtr cursor)
 
void rfbSetCursor (rfbScreenInfoPtr rfbScreen, rfbCursorPtr c)
 
void rfbDefaultPtrAddEvent (int buttonMask, int x, int y, rfbClientPtr cl)
 cursor handling for the pointer More...
 
void rfbResetStats (rfbClientPtr cl)
 
void rfbPrintStats (rfbClientPtr cl)
 
int rfbDrawChar (rfbScreenInfoPtr rfbScreen, rfbFontDataPtr font, int x, int y, unsigned char c, rfbPixel colour)
 
void rfbDrawString (rfbScreenInfoPtr rfbScreen, rfbFontDataPtr font, int x, int y, const char *string, rfbPixel colour)
 
int rfbDrawCharWithClip (rfbScreenInfoPtr rfbScreen, rfbFontDataPtr font, int x, int y, unsigned char c, int x1, int y1, int x2, int y2, rfbPixel colour, rfbPixel backColour)
 if colour==backColour, background is transparent More...
 
void rfbDrawStringWithClip (rfbScreenInfoPtr rfbScreen, rfbFontDataPtr font, int x, int y, const char *string, int x1, int y1, int x2, int y2, rfbPixel colour, rfbPixel backColour)
 
int rfbWidthOfString (rfbFontDataPtr font, const char *string)
 
int rfbWidthOfChar (rfbFontDataPtr font, unsigned char c)
 
void rfbFontBBox (rfbFontDataPtr font, unsigned char c, int *x1, int *y1, int *x2, int *y2)
 
void rfbWholeFontBBox (rfbFontDataPtr font, int *x1, int *y1, int *x2, int *y2)
 this returns the smallest box enclosing any character of font. More...
 
rfbFontDataPtr rfbLoadConsoleFont (char *filename)
 dynamically load a linux console font (4096 bytes, 256 glyphs a 8x16 More...
 
void rfbFreeFont (rfbFontDataPtr font)
 free a dynamically loaded font More...
 
void rfbFillRect (rfbScreenInfoPtr s, int x1, int y1, int x2, int y2, rfbPixel col)
 
void rfbDrawPixel (rfbScreenInfoPtr s, int x, int y, rfbPixel col)
 
void rfbDrawLine (rfbScreenInfoPtr s, int x1, int y1, int x2, int y2, rfbPixel col)
 
int rfbSelectBox (rfbScreenInfoPtr rfbScreen, rfbFontDataPtr font, char **list, int x1, int y1, int x2, int y2, rfbPixel foreColour, rfbPixel backColour, int border, SelectionChangedHookPtr selChangedHook)
 
void rfbUsage (void)
 
void rfbPurgeArguments (int *argc, int *position, int count, char *argv[])
 
rfbBool rfbProcessArguments (rfbScreenInfoPtr rfbScreen, int *argc, char *argv[])
 
rfbBool rfbProcessSizeArguments (int *width, int *height, int *bpp, int *argc, char *argv[])
 
void rfbLogEnable (int enabled)
 
void rfbLogPerror (const char *str)
 
void rfbScheduleCopyRect (rfbScreenInfoPtr rfbScreen, int x1, int y1, int x2, int y2, int dx, int dy)
 
void rfbScheduleCopyRegion (rfbScreenInfoPtr rfbScreen, sraRegionPtr copyRegion, int dx, int dy)
 
void rfbDoCopyRect (rfbScreenInfoPtr rfbScreen, int x1, int y1, int x2, int y2, int dx, int dy)
 
void rfbDoCopyRegion (rfbScreenInfoPtr rfbScreen, sraRegionPtr copyRegion, int dx, int dy)
 
void rfbMarkRectAsModified (rfbScreenInfoPtr rfbScreen, int x1, int y1, int x2, int y2)
 
void rfbMarkRegionAsModified (rfbScreenInfoPtr rfbScreen, sraRegionPtr modRegion)
 
void rfbDoNothingWithClient (rfbClientPtr cl)
 
enum rfbNewClientAction defaultNewClientHook (rfbClientPtr cl)
 
void rfbRegisterProtocolExtension (rfbProtocolExtension *extension)
 
void rfbUnregisterProtocolExtension (rfbProtocolExtension *extension)
 
struct _rfbProtocolExtension * rfbGetExtensionIterator (void)
 
void rfbReleaseExtensionIterator (void)
 
rfbBool rfbEnableExtension (rfbClientPtr cl, rfbProtocolExtension *extension, void *data)
 
rfbBool rfbDisableExtension (rfbClientPtr cl, rfbProtocolExtension *extension)
 
void * rfbGetExtensionClientData (rfbClientPtr cl, rfbProtocolExtension *extension)
 
rfbBool rfbCheckPasswordByList (rfbClientPtr cl, const char *response, int len)
 to check against plain passwords More...
 
rfbScreenInfoPtr rfbGetScreen (int *argc, char **argv, int width, int height, int bitsPerSample, int samplesPerPixel, int bytesPerPixel)
 
void rfbInitServer (rfbScreenInfoPtr rfbScreen)
 
void rfbShutdownServer (rfbScreenInfoPtr rfbScreen, rfbBool disconnectClients)
 
void rfbNewFramebuffer (rfbScreenInfoPtr rfbScreen, char *framebuffer, int width, int height, int bitsPerSample, int samplesPerPixel, int bytesPerPixel)
 
void rfbScreenCleanup (rfbScreenInfoPtr screenInfo)
 
void rfbSetServerVersionIdentity (rfbScreenInfoPtr screen, char *fmt,...)
 
void rfbStartOnHoldClient (rfbClientPtr cl)
 
void rfbRefuseOnHoldClient (rfbClientPtr cl)
 
void rfbRunEventLoop (rfbScreenInfoPtr screenInfo, long usec, rfbBool runInBackground)
 
rfbBool rfbProcessEvents (rfbScreenInfoPtr screenInfo, long usec)
 
rfbBool rfbIsActive (rfbScreenInfoPtr screenInfo)
 
void rfbRegisterTightVNCFileTransferExtension (void)
 Register the TightVNC-1.3.x file transfer extension. More...
 
void rfbUnregisterTightVNCFileTransferExtension (void)
 Unregister the TightVNC-1.3.x file transfer extension. More...
 
char * messageNameServer2Client (uint32_t type, char *buf, int len)
 
char * messageNameClient2Server (uint32_t type, char *buf, int len)
 
char * encodingName (uint32_t enc, char *buf, int len)
 
rfbStatListrfbStatLookupEncoding (rfbClientPtr cl, uint32_t type)
 
rfbStatListrfbStatLookupMessage (rfbClientPtr cl, uint32_t type)
 
void rfbStatRecordEncodingSent (rfbClientPtr cl, uint32_t type, int byteCount, int byteIfRaw)
 
void rfbStatRecordEncodingSentAdd (rfbClientPtr cl, uint32_t type, int byteCount)
 
void rfbStatRecordEncodingRcvd (rfbClientPtr cl, uint32_t type, int byteCount, int byteIfRaw)
 
void rfbStatRecordMessageSent (rfbClientPtr cl, uint32_t type, int byteCount, int byteIfRaw)
 
void rfbStatRecordMessageRcvd (rfbClientPtr cl, uint32_t type, int byteCount, int byteIfRaw)
 
int rfbStatGetSentBytes (rfbClientPtr cl)
 
int rfbStatGetSentBytesIfRaw (rfbClientPtr cl)
 
int rfbStatGetRcvdBytes (rfbClientPtr cl)
 
int rfbStatGetRcvdBytesIfRaw (rfbClientPtr cl)
 
int rfbStatGetMessageCountSent (rfbClientPtr cl, uint32_t type)
 
int rfbStatGetMessageCountRcvd (rfbClientPtr cl, uint32_t type)
 
int rfbStatGetEncodingCountSent (rfbClientPtr cl, uint32_t type)
 
int rfbStatGetEncodingCountRcvd (rfbClientPtr cl, uint32_t type)
 
void rfbSetProtocolVersion (rfbScreenInfoPtr rfbScreen, int major_, int minor_)
 Set which version you want to advertise 3.3, 3.6, 3.7 and 3.8 are currently supported. More...
 
rfbBool rfbSendTextChatMessage (rfbClientPtr cl, uint32_t length, char *buffer)
 send a TextChat message to a client More...
 
rfbBool rfbProcessNewConnection (rfbScreenInfoPtr rfbScreen)
 
rfbBool rfbUpdateClient (rfbClientPtr cl)
 

Variables

char rfbEndianTest
 
int rfbMaxClientWait
 
rfbBool rfbEconomicTranslate
 
unsigned char rfbReverseByte [0x100]
 
rfbLogProc rfbLog
 
rfbLogProc rfbErr
 

Macro Definition Documentation

◆ UPDATE_BUF_SIZE

#define UPDATE_BUF_SIZE   32768

UPDATE_BUF_SIZE must be big enough to send at least one whole line of the framebuffer.

So for a max screen width of say 2K with 32-bit pixels this means 8K minimum.

Definition at line 570 of file rfb.h.