X-Git-Url: http://git.maemo.org/git/?p=qemu;a=blobdiff_plain;f=vnc.h;h=3ae95f3d7447b77db75849431c91424a3c9651e9;hp=b5ae1f951bd0d5d64b381f9ae99fee71ffd6a4e3;hb=HEAD;hpb=5fb6c7a8b26eab1a22207d24b4784bd2b39ab54b diff --git a/vnc.h b/vnc.h index b5ae1f9..3ae95f3 100644 --- a/vnc.h +++ b/vnc.h @@ -80,6 +80,10 @@ typedef struct VncDisplay VncDisplay; #include "vnc-tls.h" #include "vnc-auth-vencrypt.h" #endif +#ifdef CONFIG_VNC_SASL +#include "vnc-auth-sasl.h" +#endif + struct VncDisplay { @@ -95,17 +99,29 @@ struct VncDisplay int subauth; /* Used by VeNCrypt */ VncDisplayTLS tls; #endif +#ifdef CONFIG_VNC_SASL + VncDisplaySASL sasl; +#endif +}; + +struct VncSurface +{ + uint32_t dirty[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS]; + DisplaySurface *ds; }; struct VncState { QEMUTimer *timer; int csock; + DisplayState *ds; + struct VncSurface guest; /* guest visible surface (aka ds->surface) */ + struct VncSurface server; /* vnc server surface */ + VncDisplay *vd; int need_update; - uint32_t dirty_row[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS]; - char *old_data; + int force_update; uint32_t features; int absolute; int last_x; @@ -119,17 +135,19 @@ struct VncState int minor; char challenge[VNC_AUTH_CHALLENGE_SIZE]; - #ifdef CONFIG_VNC_TLS VncStateTLS tls; #endif +#ifdef CONFIG_VNC_SASL + VncStateSASL sasl; +#endif Buffer output; Buffer input; /* current output mode information */ VncWritePixels *write_pixels; VncSendHextileTile *send_hextile_tile; - DisplaySurface clientds, serverds; + DisplaySurface clientds; CaptureVoiceOut *audio_cap; struct audsettings as; @@ -161,8 +179,9 @@ enum { VNC_AUTH_RA2NE = 6, VNC_AUTH_TIGHT = 16, VNC_AUTH_ULTRA = 17, - VNC_AUTH_TLS = 18, - VNC_AUTH_VENCRYPT = 19 + VNC_AUTH_TLS = 18, /* Supported in GTK-VNC & VINO */ + VNC_AUTH_VENCRYPT = 19, /* Supported in GTK-VNC & VeNCrypt */ + VNC_AUTH_SASL = 20, /* Supported in GTK-VNC & VINO */ }; enum { @@ -173,6 +192,8 @@ enum { VNC_AUTH_VENCRYPT_X509NONE = 260, VNC_AUTH_VENCRYPT_X509VNC = 261, VNC_AUTH_VENCRYPT_X509PLAIN = 262, + VNC_AUTH_VENCRYPT_X509SASL = 263, + VNC_AUTH_VENCRYPT_TLSSASL = 264, }; @@ -256,6 +277,8 @@ enum { void vnc_client_read(void *opaque); void vnc_client_write(void *opaque); +long vnc_client_read_buf(VncState *vs, uint8_t *data, size_t datalen); +long vnc_client_write_buf(VncState *vs, const uint8_t *data, size_t datalen); /* Protocol I/O functions */ void vnc_write(VncState *vs, const void *data, size_t len); @@ -275,8 +298,22 @@ uint32_t read_u32(uint8_t *data, size_t offset); /* Protocol stage functions */ void vnc_client_error(VncState *vs); +int vnc_client_io_error(VncState *vs, int ret, int last_errno); void start_client_init(VncState *vs); void start_auth_vnc(VncState *vs); +/* Buffer management */ +void buffer_reserve(Buffer *buffer, size_t len); +int buffer_empty(Buffer *buffer); +uint8_t *buffer_end(Buffer *buffer); +void buffer_reset(Buffer *buffer); +void buffer_append(Buffer *buffer, const void *data, size_t len); + + +/* Misc helpers */ + +char *vnc_socket_local_addr(const char *format, int fd); +char *vnc_socket_remote_addr(const char *format, int fd); + #endif /* __QEMU_VNC_H */