summaryrefslogtreecommitdiffstats
path: root/libxrdp/libxrdp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libxrdp/libxrdp.h')
-rw-r--r--libxrdp/libxrdp.h615
1 files changed, 330 insertions, 285 deletions
diff --git a/libxrdp/libxrdp.h b/libxrdp/libxrdp.h
index d9e5e6d1..0bda9f45 100644
--- a/libxrdp/libxrdp.h
+++ b/libxrdp/libxrdp.h
@@ -37,33 +37,46 @@
#include "file_loc.h"
#include "xrdp_client_info.h"
+
/* iso */
struct xrdp_iso
{
- struct xrdp_mcs* mcs_layer; /* owner */
- int requestedProtocol;
- int selectedProtocol;
- struct trans* trans;
+ struct xrdp_mcs *mcs_layer; /* owner */
+ int rdpNegData; /* bool */
+ int requestedProtocol;
+ int selectedProtocol;
+ int failureCode;
+ struct trans *trans;
};
/* used in mcs */
struct mcs_channel_item
{
- char name[16];
- int flags;
- int chanid;
+ char name[16];
+ int flags;
+ int chanid;
};
/* mcs */
struct xrdp_mcs
{
- struct xrdp_sec* sec_layer; /* owner */
- struct xrdp_iso* iso_layer;
- int userid;
- int chanid;
- struct stream* client_mcs_data;
- struct stream* server_mcs_data;
- struct list* channel_list;
+ struct xrdp_sec *sec_layer; /* owner */
+ struct xrdp_iso *iso_layer;
+ int userid;
+ int chanid;
+ struct stream *client_mcs_data;
+ struct stream *server_mcs_data;
+ struct list *channel_list;
+};
+
+/* fastpath */
+struct xrdp_fastpath
+{
+ struct xrdp_sec *sec_layer; /* owner */
+ struct trans *trans;
+ struct xrdp_session *session;
+ int numEvents;
+ int secFlags;
};
/* Encryption Methods */
@@ -80,177 +93,181 @@ struct xrdp_mcs
#define CRYPT_LEVEL_HIGH 0x00000003
#define CRYPT_LEVEL_FIPS 0x00000004
+
/* sec */
struct xrdp_sec
{
- struct xrdp_rdp* rdp_layer; /* owner */
- struct xrdp_mcs* mcs_layer;
- struct xrdp_channel* chan_layer;
- char server_random[32];
- char client_random[64];
- char client_crypt_random[72];
- struct stream client_mcs_data;
- struct stream server_mcs_data;
- int decrypt_use_count;
- int encrypt_use_count;
- char decrypt_key[16];
- char encrypt_key[16];
- char decrypt_update_key[16];
- char encrypt_update_key[16];
- int crypt_method;
- int rc4_key_len; /* 8 = 40 bit, 16 = 128 bit */
- int crypt_level;
- char sign_key[16];
- void* decrypt_rc4_info;
- void* encrypt_rc4_info;
- char pub_exp[4];
- char pub_mod[64];
- char pub_sig[64];
- char pri_exp[64];
- int channel_code;
- int multimon;
- char fips_encrypt_key[24];
- char fips_decrypt_key[24];
- char fips_sign_key[20];
- void* encrypt_fips_info;
- void* decrypt_fips_info;
- void* sign_fips_info;
+ struct xrdp_rdp *rdp_layer; /* owner */
+ struct xrdp_mcs *mcs_layer;
+ struct xrdp_fastpath *fastpath_layer;
+ struct xrdp_channel *chan_layer;
+ char server_random[32];
+ char client_random[256];
+ char client_crypt_random[256 + 8]; /* 64 + 8, 256 + 8 */
+ struct stream client_mcs_data;
+ struct stream server_mcs_data;
+ int decrypt_use_count;
+ int encrypt_use_count;
+ char decrypt_key[16];
+ char encrypt_key[16];
+ char decrypt_update_key[16];
+ char encrypt_update_key[16];
+ int crypt_method;
+ int rc4_key_len; /* 8 = 40 bit, 16 = 128 bit */
+ int crypt_level;
+ char sign_key[16];
+ void *decrypt_rc4_info;
+ void *encrypt_rc4_info;
+ char pub_exp[4];
+ char pub_mod[256];
+ char pub_sig[64];
+ char pri_exp[256];
+ int rsa_key_bytes; /* 64 or 256 , 0 = no rdp security */
+ char fips_encrypt_key[24];
+ char fips_decrypt_key[24];
+ char fips_sign_key[20];
+ void *encrypt_fips_info;
+ void *decrypt_fips_info;
+ void *sign_fips_info;
};
/* channel */
struct xrdp_channel
{
- struct xrdp_sec* sec_layer;
- struct xrdp_mcs* mcs_layer;
+ struct xrdp_sec *sec_layer;
+ struct xrdp_mcs *mcs_layer;
};
/* rdp */
struct xrdp_rdp
{
- struct xrdp_session* session;
- struct xrdp_sec* sec_layer;
- int share_id;
- int mcs_channel;
- struct xrdp_client_info client_info;
- struct xrdp_mppc_enc* mppc_enc;
- void* rfx_enc;
+ struct xrdp_session *session;
+ struct xrdp_sec *sec_layer;
+ int share_id;
+ int mcs_channel;
+ struct xrdp_client_info client_info;
+ struct xrdp_mppc_enc *mppc_enc;
+ void *rfx_enc;
};
/* state */
struct xrdp_orders_state
{
- int last_order; /* last order sent */
-
- int clip_left; /* RDP_ORDER_BOUNDS, RDP_ORDER_LASTBOUNDS */
- int clip_top;
- int clip_right;
- int clip_bottom;
-
- int rect_x; /* RDP_ORDER_RECT */
- int rect_y;
- int rect_cx;
- int rect_cy;
- int rect_color;
-
- int scr_blt_x; /* RDP_ORDER_SCREENBLT */
- int scr_blt_y;
- int scr_blt_cx;
- int scr_blt_cy;
- int scr_blt_rop;
- int scr_blt_srcx;
- int scr_blt_srcy;
-
- int pat_blt_x; /* RDP_ORDER_PATBLT */
- int pat_blt_y;
- int pat_blt_cx;
- int pat_blt_cy;
- int pat_blt_rop;
- int pat_blt_bg_color;
- int pat_blt_fg_color;
- struct xrdp_brush pat_blt_brush;
-
- int dest_blt_x; /* RDP_ORDER_DESTBLT */
- int dest_blt_y;
- int dest_blt_cx;
- int dest_blt_cy;
- int dest_blt_rop;
-
- int line_mix_mode; /* RDP_ORDER_LINE */
- int line_startx;
- int line_starty;
- int line_endx;
- int line_endy;
- int line_bg_color;
- int line_rop;
- struct xrdp_pen line_pen;
-
- int mem_blt_color_table; /* RDP_ORDER_MEMBLT */
- int mem_blt_cache_id;
- int mem_blt_x;
- int mem_blt_y;
- int mem_blt_cx;
- int mem_blt_cy;
- int mem_blt_rop;
- int mem_blt_srcx;
- int mem_blt_srcy;
- int mem_blt_cache_idx;
-
- int text_font; /* RDP_ORDER_TEXT2 */
- int text_flags;
- int text_unknown;
- int text_mixmode;
- int text_fg_color;
- int text_bg_color;
- int text_clip_left;
- int text_clip_top;
- int text_clip_right;
- int text_clip_bottom;
- int text_box_left;
- int text_box_top;
- int text_box_right;
- int text_box_bottom;
- int text_x;
- int text_y;
- int text_len;
- char* text_data;
-
- int com_blt_srcidx; /* RDP_ORDER_COMPOSITE */ /* 2 */
- int com_blt_srcformat; /* 2 */
- int com_blt_srcwidth; /* 2 */
- int com_blt_srcrepeat; /* 1 */
- int com_blt_srctransform[10]; /* 40 */
- int com_blt_mskflags; /* 1 */
- int com_blt_mskidx; /* 2 */
- int com_blt_mskformat; /* 2 */
- int com_blt_mskwidth; /* 2 */
- int com_blt_mskrepeat; /* 1 */
- int com_blt_op; /* 1 */
- int com_blt_srcx; /* 2 */
- int com_blt_srcy; /* 2 */
- int com_blt_mskx; /* 2 */
- int com_blt_msky; /* 2 */
- int com_blt_dstx; /* 2 */
- int com_blt_dsty; /* 2 */
- int com_blt_width; /* 2 */
- int com_blt_height; /* 2 */
- int com_blt_dstformat; /* 2 */
+ int last_order; /* last order sent */
+
+ int clip_left; /* RDP_ORDER_BOUNDS, RDP_ORDER_LASTBOUNDS */
+ int clip_top;
+ int clip_right;
+ int clip_bottom;
+
+ int rect_x; /* RDP_ORDER_RECT */
+ int rect_y;
+ int rect_cx;
+ int rect_cy;
+ int rect_color;
+
+ int scr_blt_x; /* RDP_ORDER_SCREENBLT */
+ int scr_blt_y;
+ int scr_blt_cx;
+ int scr_blt_cy;
+ int scr_blt_rop;
+ int scr_blt_srcx;
+ int scr_blt_srcy;
+
+ int pat_blt_x; /* RDP_ORDER_PATBLT */
+ int pat_blt_y;
+ int pat_blt_cx;
+ int pat_blt_cy;
+ int pat_blt_rop;
+ int pat_blt_bg_color;
+ int pat_blt_fg_color;
+ struct xrdp_brush pat_blt_brush;
+
+ int dest_blt_x; /* RDP_ORDER_DESTBLT */
+ int dest_blt_y;
+ int dest_blt_cx;
+ int dest_blt_cy;
+ int dest_blt_rop;
+
+ int line_mix_mode; /* RDP_ORDER_LINE */
+ int line_startx;
+ int line_starty;
+ int line_endx;
+ int line_endy;
+ int line_bg_color;
+ int line_rop;
+ struct xrdp_pen line_pen;
+
+ int mem_blt_color_table; /* RDP_ORDER_MEMBLT */
+ int mem_blt_cache_id;
+ int mem_blt_x;
+ int mem_blt_y;
+ int mem_blt_cx;
+ int mem_blt_cy;
+ int mem_blt_rop;
+ int mem_blt_srcx;
+ int mem_blt_srcy;
+ int mem_blt_cache_idx;
+
+ int text_font; /* RDP_ORDER_TEXT2 */
+ int text_flags;
+ int text_unknown;
+ int text_mixmode;
+ int text_fg_color;
+ int text_bg_color;
+ int text_clip_left;
+ int text_clip_top;
+ int text_clip_right;
+ int text_clip_bottom;
+ int text_box_left;
+ int text_box_top;
+ int text_box_right;
+ int text_box_bottom;
+ int text_x;
+ int text_y;
+ int text_len;
+ char *text_data;
+
+ int com_blt_srcidx; /* RDP_ORDER_COMPOSITE */ /* 2 */
+ int com_blt_srcformat; /* 2 */
+ int com_blt_srcwidth; /* 2 */
+ int com_blt_srcrepeat; /* 1 */
+ int com_blt_srctransform[10]; /* 40 */
+ int com_blt_mskflags; /* 1 */
+ int com_blt_mskidx; /* 2 */
+ int com_blt_mskformat; /* 2 */
+ int com_blt_mskwidth; /* 2 */
+ int com_blt_mskrepeat; /* 1 */
+ int com_blt_op; /* 1 */
+ int com_blt_srcx; /* 2 */
+ int com_blt_srcy; /* 2 */
+ int com_blt_mskx; /* 2 */
+ int com_blt_msky; /* 2 */
+ int com_blt_dstx; /* 2 */
+ int com_blt_dsty; /* 2 */
+ int com_blt_width; /* 2 */
+ int com_blt_height; /* 2 */
+ int com_blt_dstformat; /* 2 */
};
/* orders */
struct xrdp_orders
{
- struct stream* out_s;
- struct xrdp_rdp* rdp_layer;
- struct xrdp_session* session;
- struct xrdp_wm* wm;
-
- char* order_count_ptr; /* pointer to count, set when sending */
- int order_count;
- int order_level; /* inc for every call to xrdp_orders_init */
- struct xrdp_orders_state orders_state;
- void* jpeg_han;
- int rfx_min_pixel;
+ struct stream *out_s;
+ struct xrdp_rdp *rdp_layer;
+ struct xrdp_session *session;
+ struct xrdp_wm *wm;
+
+ char *order_count_ptr; /* pointer to count, set when sending */
+ int order_count;
+ int order_level; /* inc for every call to xrdp_orders_init */
+ struct xrdp_orders_state orders_state;
+ void *jpeg_han;
+ int rfx_min_pixel;
+ /* shared */
+ struct stream *s;
+ struct stream *temp_s;
};
#define PROTO_RDP_40 1
@@ -258,19 +275,20 @@ struct xrdp_orders
struct xrdp_mppc_enc
{
- int protocol_type; /* PROTO_RDP_40, PROTO_RDP_50 etc */
- char *historyBuffer; /* contains uncompressed data */
- char *outputBuffer; /* contains compressed data */
- char *outputBufferPlus;
- int historyOffset; /* next free slot in historyBuffer */
- int buf_len; /* length of historyBuffer, protocol dependant */
- int bytes_in_opb; /* compressed bytes available in outputBuffer */
- int flags; /* PACKET_COMPRESSED, PACKET_AT_FRONT, PACKET_FLUSHED etc */
- int flagsHold;
- int first_pkt; /* this is the first pkt passing through enc */
- tui16 *hash_table;
+ int protocol_type; /* PROTO_RDP_40, PROTO_RDP_50 etc */
+ char *historyBuffer; /* contains uncompressed data */
+ char *outputBuffer; /* contains compressed data */
+ char *outputBufferPlus;
+ int historyOffset; /* next free slot in historyBuffer */
+ int buf_len; /* length of historyBuffer, protocol dependant */
+ int bytes_in_opb; /* compressed bytes available in outputBuffer */
+ int flags; /* PACKET_COMPRESSED, PACKET_AT_FRONT, PACKET_FLUSHED etc */
+ int flagsHold;
+ int first_pkt; /* this is the first pkt passing through enc */
+ tui16 *hash_table;
};
+
int APP_CC
compress_rdp(struct xrdp_mppc_enc *enc, tui8 *srcData, int len);
struct xrdp_mppc_enc * APP_CC
@@ -279,217 +297,225 @@ void APP_CC
mppc_enc_free(struct xrdp_mppc_enc *enc);
/* xrdp_tcp.c */
-struct xrdp_tcp* APP_CC
-xrdp_tcp_create(struct xrdp_iso* owner, struct trans* trans);
+struct xrdp_tcp * APP_CC
+xrdp_tcp_create(struct xrdp_iso *owner, struct trans *trans);
void APP_CC
-xrdp_tcp_delete(struct xrdp_tcp* self);
+xrdp_tcp_delete(struct xrdp_tcp *self);
int APP_CC
-xrdp_tcp_init(struct xrdp_tcp* self, struct stream* s);
+xrdp_tcp_init(struct xrdp_tcp *self, struct stream *s);
int APP_CC
-xrdp_tcp_recv(struct xrdp_tcp* self, struct stream* s, int len);
+xrdp_tcp_recv(struct xrdp_tcp *self, struct stream *s, int len);
int APP_CC
-xrdp_tcp_send(struct xrdp_tcp* self, struct stream* s);
+xrdp_tcp_send(struct xrdp_tcp *self, struct stream *s);
/* xrdp_iso.c */
-struct xrdp_iso* APP_CC
-xrdp_iso_create(struct xrdp_mcs* owner, struct trans* trans);
+struct xrdp_iso * APP_CC
+xrdp_iso_create(struct xrdp_mcs *owner, struct trans *trans);
void APP_CC
-xrdp_iso_delete(struct xrdp_iso* self);
+xrdp_iso_delete(struct xrdp_iso *self);
+int APP_CC
+xrdp_iso_init(struct xrdp_iso *self, struct stream *s);
int APP_CC
-xrdp_iso_init(struct xrdp_iso* self, struct stream* s);
+xrdp_iso_recv(struct xrdp_iso *self, struct stream *s);
int APP_CC
-xrdp_iso_recv(struct xrdp_iso* self, struct stream* s);
+xrdp_iso_send(struct xrdp_iso *self, struct stream *s);
int APP_CC
-xrdp_iso_send(struct xrdp_iso* self, struct stream* s);
+xrdp_iso_incoming(struct xrdp_iso *self);
int APP_CC
-xrdp_iso_incoming(struct xrdp_iso* self);
+xrdp_iso_detect_tpkt(struct xrdp_iso *self, struct stream *s);
/* xrdp_mcs.c */
-struct xrdp_mcs* APP_CC
-xrdp_mcs_create(struct xrdp_sec* owner, struct trans* trans,
- struct stream* client_mcs_data,
- struct stream* server_mcs_data);
+struct xrdp_mcs * APP_CC
+xrdp_mcs_create(struct xrdp_sec *owner, struct trans *trans,
+ struct stream *client_mcs_data,
+ struct stream *server_mcs_data);
void APP_CC
-xrdp_mcs_delete(struct xrdp_mcs* self);
+xrdp_mcs_delete(struct xrdp_mcs *self);
int APP_CC
-xrdp_mcs_init(struct xrdp_mcs* self, struct stream* s);
+xrdp_mcs_init(struct xrdp_mcs *self, struct stream *s);
int APP_CC
-xrdp_mcs_recv(struct xrdp_mcs* self, struct stream* s, int* chan);
+xrdp_mcs_recv(struct xrdp_mcs *self, struct stream *s, int *chan);
int APP_CC
-xrdp_mcs_send(struct xrdp_mcs* self, struct stream* s, int chan);
+xrdp_mcs_send(struct xrdp_mcs *self, struct stream *s, int chan);
int APP_CC
-xrdp_mcs_incoming(struct xrdp_mcs* self);
+xrdp_mcs_incoming(struct xrdp_mcs *self);
int APP_CC
-xrdp_mcs_disconnect(struct xrdp_mcs* self);
+xrdp_mcs_disconnect(struct xrdp_mcs *self);
/* xrdp_sec.c */
-struct xrdp_sec* APP_CC
-xrdp_sec_create(struct xrdp_rdp* owner, struct trans* trans, int crypt_level,
- int channel_code, int multimon);
+struct xrdp_sec *APP_CC
+xrdp_sec_create(struct xrdp_rdp *owner, struct trans *trans);
void APP_CC
-xrdp_sec_delete(struct xrdp_sec* self);
+xrdp_sec_delete(struct xrdp_sec *self);
+int APP_CC
+xrdp_sec_init(struct xrdp_sec *self, struct stream *s);
+int APP_CC
+xrdp_sec_get_fastpath_bytes(struct xrdp_sec *self);
+int APP_CC
+xrdp_sec_init_fastpath(struct xrdp_sec *self, struct stream *s);
int APP_CC
-xrdp_sec_init(struct xrdp_sec* self, struct stream* s);
+xrdp_sec_send_fastpath(struct xrdp_sec *self, struct stream *s);
int APP_CC
-xrdp_sec_recv(struct xrdp_sec* self, struct stream* s, int* chan);
+xrdp_sec_recv_fastpath(struct xrdp_sec *self, struct stream *s);
int APP_CC
-xrdp_sec_send(struct xrdp_sec* self, struct stream* s, int chan);
+xrdp_sec_recv(struct xrdp_sec *self, struct stream *s, int *chan);
int APP_CC
-xrdp_sec_process_mcs_data(struct xrdp_sec* self);
+xrdp_sec_send(struct xrdp_sec *self, struct stream *s, int chan);
int APP_CC
-xrdp_sec_out_mcs_data(struct xrdp_sec* self);
+xrdp_sec_process_mcs_data(struct xrdp_sec *self);
int APP_CC
-xrdp_sec_incoming(struct xrdp_sec* self);
+xrdp_sec_incoming(struct xrdp_sec *self);
int APP_CC
-xrdp_sec_disconnect(struct xrdp_sec* self);
+xrdp_sec_disconnect(struct xrdp_sec *self);
/* xrdp_rdp.c */
-struct xrdp_rdp* APP_CC
-xrdp_rdp_create(struct xrdp_session* session, struct trans* trans);
+struct xrdp_rdp * APP_CC
+xrdp_rdp_create(struct xrdp_session *session, struct trans *trans);
void APP_CC
-xrdp_rdp_delete(struct xrdp_rdp* self);
+xrdp_rdp_delete(struct xrdp_rdp *self);
int APP_CC
-xrdp_rdp_init(struct xrdp_rdp* self, struct stream* s);
+xrdp_rdp_init(struct xrdp_rdp *self, struct stream *s);
int APP_CC
-xrdp_rdp_init_data(struct xrdp_rdp* self, struct stream* s);
+xrdp_rdp_init_data(struct xrdp_rdp *self, struct stream *s);
int APP_CC
-xrdp_rdp_recv(struct xrdp_rdp* self, struct stream* s, int* code);
+xrdp_rdp_get_fastpath_bytes(struct xrdp_rdp *self);
int APP_CC
-xrdp_rdp_send(struct xrdp_rdp* self, struct stream* s, int pdu_type);
+xrdp_rdp_init_fastpath(struct xrdp_rdp *self, struct stream *s);
int APP_CC
-xrdp_rdp_send_data(struct xrdp_rdp* self, struct stream* s,
- int data_pdu_type);
+xrdp_rdp_recv(struct xrdp_rdp *self, struct stream *s, int *code);
int APP_CC
-xrdp_rdp_send_data_update_sync(struct xrdp_rdp* self);
+xrdp_rdp_send(struct xrdp_rdp *self, struct stream *s, int pdu_type);
int APP_CC
-xrdp_rdp_incoming(struct xrdp_rdp* self);
+xrdp_rdp_send_data(struct xrdp_rdp *self, struct stream *s,
+ int data_pdu_type);
int APP_CC
-xrdp_rdp_send_demand_active(struct xrdp_rdp* self);
+xrdp_rdp_send_fastpath(struct xrdp_rdp *self, struct stream *s,
+ int data_pdu_type);
int APP_CC
-xrdp_rdp_send_monitorlayout(struct xrdp_rdp* self);
+xrdp_rdp_send_data_update_sync(struct xrdp_rdp *self);
int APP_CC
-xrdp_rdp_process_confirm_active(struct xrdp_rdp* self, struct stream* s);
+xrdp_rdp_incoming(struct xrdp_rdp *self);
int APP_CC
-xrdp_rdp_process_data(struct xrdp_rdp* self, struct stream* s);
+xrdp_rdp_process_data(struct xrdp_rdp *self, struct stream *s);
int APP_CC
-xrdp_rdp_disconnect(struct xrdp_rdp* self);
+xrdp_rdp_disconnect(struct xrdp_rdp *self);
int APP_CC
-xrdp_rdp_send_deactive(struct xrdp_rdp* self);
+xrdp_rdp_send_deactive(struct xrdp_rdp *self);
/* xrdp_orders.c */
-struct xrdp_orders* APP_CC
-xrdp_orders_create(struct xrdp_session* session,
- struct xrdp_rdp* rdp_layer);
+struct xrdp_orders * APP_CC
+xrdp_orders_create(struct xrdp_session *session,
+ struct xrdp_rdp *rdp_layer);
void APP_CC
-xrdp_orders_delete(struct xrdp_orders* self);
+xrdp_orders_delete(struct xrdp_orders *self);
int APP_CC
-xrdp_orders_reset(struct xrdp_orders* self);
+xrdp_orders_reset(struct xrdp_orders *self);
int APP_CC
-xrdp_orders_init(struct xrdp_orders* self);
+xrdp_orders_init(struct xrdp_orders *self);
int APP_CC
-xrdp_orders_send(struct xrdp_orders* self);
+xrdp_orders_send(struct xrdp_orders *self);
int APP_CC
-xrdp_orders_force_send(struct xrdp_orders* self);
+xrdp_orders_force_send(struct xrdp_orders *self);
int APP_CC
-xrdp_orders_check(struct xrdp_orders* self, int max_size);
+xrdp_orders_check(struct xrdp_orders *self, int max_size);
int APP_CC
-xrdp_orders_rect(struct xrdp_orders* self, int x, int y, int cx, int cy,
- int color, struct xrdp_rect* rect);
+xrdp_orders_rect(struct xrdp_orders *self, int x, int y, int cx, int cy,
+ int color, struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_screen_blt(struct xrdp_orders* self, int x, int y,
+xrdp_orders_screen_blt(struct xrdp_orders *self, int x, int y,
int cx, int cy, int srcx, int srcy,
- int rop, struct xrdp_rect* rect);
+ int rop, struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_pat_blt(struct xrdp_orders* self, int x, int y,
+xrdp_orders_pat_blt(struct xrdp_orders *self, int x, int y,
int cx, int cy, int rop, int bg_color,
- int fg_color, struct xrdp_brush* brush,
- struct xrdp_rect* rect);
+ int fg_color, struct xrdp_brush *brush,
+ struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_dest_blt(struct xrdp_orders* self, int x, int y,
+xrdp_orders_dest_blt(struct xrdp_orders *self, int x, int y,
int cx, int cy, int rop,
- struct xrdp_rect* rect);
+ struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_line(struct xrdp_orders* self, int mix_mode,
+xrdp_orders_line(struct xrdp_orders *self, int mix_mode,
int startx, int starty,
int endx, int endy, int rop, int bg_color,
- struct xrdp_pen* pen,
- struct xrdp_rect* rect);
+ struct xrdp_pen *pen,
+ struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_mem_blt(struct xrdp_orders* self, int cache_id,
+xrdp_orders_mem_blt(struct xrdp_orders *self, int cache_id,
int color_table, int x, int y, int cx, int cy,
int rop, int srcx, int srcy,
- int cache_idx, struct xrdp_rect* rect);
+ int cache_idx, struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_composite_blt(struct xrdp_orders* self, int srcidx,
+xrdp_orders_composite_blt(struct xrdp_orders *self, int srcidx,
int srcformat, int srcwidth,
- int srcrepeat, int* srctransform, int mskflags,
+ int srcrepeat, int *srctransform, int mskflags,
int mskidx, int mskformat, int mskwidth,
int mskrepeat, int op, int srcx, int srcy,
int mskx, int msky, int dstx, int dsty,
int width, int height, int dstformat,
- struct xrdp_rect* rect);
+ struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_text(struct xrdp_orders* self,
+xrdp_orders_text(struct xrdp_orders *self,
int font, int flags, int mixmode,
int fg_color, int bg_color,
int clip_left, int clip_top,
int clip_right, int clip_bottom,
int box_left, int box_top,
int box_right, int box_bottom,
- int x, int y, char* data, int data_len,
- struct xrdp_rect* rect);
+ int x, int y, char *data, int data_len,
+ struct xrdp_rect *rect);
int APP_CC
-xrdp_orders_send_palette(struct xrdp_orders* self, int* palette,
+xrdp_orders_send_palette(struct xrdp_orders *self, int *palette,
int cache_id);
int APP_CC
-xrdp_orders_send_raw_bitmap(struct xrdp_orders* self,
- int width, int height, int bpp, char* data,
+xrdp_orders_send_raw_bitmap(struct xrdp_orders *self,
+ int width, int height, int bpp, char *data,
int cache_id, int cache_idx);
int APP_CC
-xrdp_orders_send_bitmap(struct xrdp_orders* self,
- int width, int height, int bpp, char* data,
+xrdp_orders_send_bitmap(struct xrdp_orders *self,
+ int width, int height, int bpp, char *data,
int cache_id, int cache_idx);
int APP_CC
-xrdp_orders_send_font(struct xrdp_orders* self,
- struct xrdp_font_char* font_char,
+xrdp_orders_send_font(struct xrdp_orders *self,
+ struct xrdp_font_char *font_char,
int font_index, int char_index);
int APP_CC
-xrdp_orders_send_raw_bitmap2(struct xrdp_orders* self,
- int width, int height, int bpp, char* data,
+xrdp_orders_send_raw_bitmap2(struct xrdp_orders *self,
+ int width, int height, int bpp, char *data,
int cache_id, int cache_idx);
int APP_CC
-xrdp_orders_send_bitmap2(struct xrdp_orders* self,
- int width, int height, int bpp, char* data,
+xrdp_orders_send_bitmap2(struct xrdp_orders *self,
+ int width, int height, int bpp, char *data,
int cache_id, int cache_idx, int hints);
int APP_CC
-xrdp_orders_send_bitmap3(struct xrdp_orders* self,
- int width, int height, int bpp, char* data,
+xrdp_orders_send_bitmap3(struct xrdp_orders *self,
+ int width, int height, int bpp, char *data,
int cache_id, int cache_idx, int hints);
int APP_CC
-xrdp_orders_send_brush(struct xrdp_orders* self, int width, int height,
- int bpp, int type, int size, char* data, int cache_id);
+xrdp_orders_send_brush(struct xrdp_orders *self, int width, int height,
+ int bpp, int type, int size, char *data, int cache_id);
int APP_CC
-xrdp_orders_send_create_os_surface(struct xrdp_orders* self, int id,
+xrdp_orders_send_create_os_surface(struct xrdp_orders *self, int id,
int width, int height,
- struct list* del_list);
+ struct list *del_list);
int APP_CC
-xrdp_orders_send_switch_os_surface(struct xrdp_orders* self, int id);
+xrdp_orders_send_switch_os_surface(struct xrdp_orders *self, int id);
/* xrdp_bitmap_compress.c */
int APP_CC
-xrdp_bitmap_compress(char* in_data, int width, int height,
- struct stream* s, int bpp, int byte_limit,
- int start_line, struct stream* temp_s,
+xrdp_bitmap_compress(char *in_data, int width, int height,
+ struct stream *s, int bpp, int byte_limit,
+ int start_line, struct stream *temp_s,
int e);
int APP_CC
-xrdp_bitmap32_compress(char* in_data, int width, int height,
- struct stream* s, int bpp, int byte_limit,
- int start_line, struct stream* temp_s,
- int e);
+xrdp_bitmap32_compress(char *in_data, int width, int height,
+ struct stream *s, int bpp, int byte_limit,
+ int start_line, struct stream *temp_s,
+ int e, int flags);
int APP_CC
-xrdp_jpeg_compress(void *handle, char* in_data, int width, int height,
- struct stream* s, int bpp, int byte_limit,
- int start_line, struct stream* temp_s,
+xrdp_jpeg_compress(void *handle, char *in_data, int width, int height,
+ struct stream *s, int bpp, int byte_limit,
+ int start_line, struct stream *temp_s,
int e, int quality);
int APP_CC
@@ -516,16 +542,35 @@ xrdp_jpeg_deinit(void *handle);
/* xrdp_channel.c */
struct xrdp_channel* APP_CC
-xrdp_channel_create(struct xrdp_sec* owner, struct xrdp_mcs* mcs_layer);
+xrdp_channel_create(struct xrdp_sec *owner, struct xrdp_mcs *mcs_layer);
void APP_CC
-xrdp_channel_delete(struct xrdp_channel* self);
+xrdp_channel_delete(struct xrdp_channel *self);
int APP_CC
-xrdp_channel_init(struct xrdp_channel* self, struct stream* s);
+xrdp_channel_init(struct xrdp_channel *self, struct stream *s);
int APP_CC
-xrdp_channel_send(struct xrdp_channel* self, struct stream* s, int channel_id,
+xrdp_channel_send(struct xrdp_channel *self, struct stream *s, int channel_id,
int total_data_len, int flags);
int APP_CC
-xrdp_channel_process(struct xrdp_channel* self, struct stream* s,
+xrdp_channel_process(struct xrdp_channel *self, struct stream *s,
int chanid);
+/* xrdp_fastpath.c */
+struct xrdp_fastpath *APP_CC
+xrdp_fastpath_create(struct xrdp_sec *owner, struct trans *trans);
+void APP_CC
+xrdp_fastpath_delete(struct xrdp_fastpath *self);
+int APP_CC
+xrdp_fastpath_recv(struct xrdp_fastpath *self, struct stream *s);
+int APP_CC
+xrdp_fastpath_process_input_event(struct xrdp_fastpath *self, struct stream *s);
+int APP_CC
+xrdp_fastpath_init(struct xrdp_fastpath *self, struct stream *s);
+int APP_CC
+xrdp_fastpath_send(struct xrdp_fastpath *self, struct stream *s);
+
+/* xrdp_caps.c */
+int APP_CC
+xrdp_caps_send_demand_active(struct xrdp_rdp *self);
+int APP_CC
+xrdp_caps_process_confirm_active(struct xrdp_rdp *self, struct stream *s);
#endif