summaryrefslogtreecommitdiffstats
path: root/xrdp
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2006-12-30 05:04:13 +0000
committerjsorg71 <jsorg71>2006-12-30 05:04:13 +0000
commit4b3b83044a29e89d958c3bf0ea2660b978e3c027 (patch)
tree0bbc878fef02fd1a4192eb45a9c032984f196253 /xrdp
parent0dc679e2dc3ddf71735585cf53c4b717ab5b11a9 (diff)
downloadxrdp-proprietary-4b3b83044a29e89d958c3bf0ea2660b978e3c027.tar.gz
xrdp-proprietary-4b3b83044a29e89d958c3bf0ea2660b978e3c027.zip
more work on channel support
Diffstat (limited to 'xrdp')
-rw-r--r--xrdp/xrdp.h8
-rw-r--r--xrdp/xrdp_interface.c33
-rw-r--r--xrdp/xrdp_login_wnd.c3
-rw-r--r--xrdp/xrdp_types.h11
4 files changed, 55 insertions, 0 deletions
diff --git a/xrdp/xrdp.h b/xrdp/xrdp.h
index 22501954..225a0f85 100644
--- a/xrdp/xrdp.h
+++ b/xrdp/xrdp.h
@@ -365,3 +365,11 @@ server_draw_text(struct xrdp_mod* mod, int font,
int x, int y, char* data, int data_len);
int DEFAULT_CC
server_reset(struct xrdp_mod* mod, int width, int height, int bpp);
+int DEFAULT_CC
+server_query_channel(struct xrdp_mod* mod, int index, char* channel_name,
+ int* channel_flags);
+int DEFAULT_CC
+server_get_channel_id(struct xrdp_mod* mod, char* name);
+int DEFAULT_CC
+server_send_to_channel(struct xrdp_mod* mod, int channel_id,
+ char* data, int data_len);
diff --git a/xrdp/xrdp_interface.c b/xrdp/xrdp_interface.c
index 1bf1a8f4..c4c54c69 100644
--- a/xrdp/xrdp_interface.c
+++ b/xrdp/xrdp_interface.c
@@ -411,3 +411,36 @@ server_reset(struct xrdp_mod* mod, int width, int height, int bpp)
xrdp_wm_load_static_pointers(wm);
return 0;
}
+
+/*****************************************************************************/
+int DEFAULT_CC
+server_query_channel(struct xrdp_mod* mod, int index, char* channel_name,
+ int* channel_flags)
+{
+ struct xrdp_wm* wm;
+
+ wm = (struct xrdp_wm*)mod->wm;
+ return libxrdp_query_channel(wm->session, index, channel_name,
+ channel_flags);
+}
+
+/*****************************************************************************/
+int DEFAULT_CC
+server_get_channel_id(struct xrdp_mod* mod, char* name)
+{
+ struct xrdp_wm* wm;
+
+ wm = (struct xrdp_wm*)mod->wm;
+ return libxrdp_get_channel_id(wm->session, name);
+}
+
+/*****************************************************************************/
+int DEFAULT_CC
+server_send_to_channel(struct xrdp_mod* mod, int channel_id,
+ char* data, int data_len)
+{
+ struct xrdp_wm* wm;
+
+ wm = (struct xrdp_wm*)mod->wm;
+ return libxrdp_send_to_channel(wm->session, channel_id, data, data_len);
+}
diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index 9481d355..f2f3dce6 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -174,6 +174,9 @@ xrdp_wm_setup_mod1(struct xrdp_wm* self,
self->mod->server_add_char = server_add_char;
self->mod->server_draw_text = server_draw_text;
self->mod->server_reset = server_reset;
+ self->mod->server_query_channel = server_query_channel;
+ self->mod->server_get_channel_id = server_get_channel_id;
+ self->mod->server_send_to_channel = server_send_to_channel;
}
}
/* id self->mod is null, there must be a problem */
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index e296bc53..f65b0c06 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -24,6 +24,7 @@
struct xrdp_mod
{
int size; /* size of this struct */
+ int version; /* internal version */
/* client functions */
int (*mod_start)(struct xrdp_mod* v, int w, int h, int bpp);
int (*mod_connect)(struct xrdp_mod* v);
@@ -32,6 +33,8 @@ struct xrdp_mod
int (*mod_signal)(struct xrdp_mod* v);
int (*mod_end)(struct xrdp_mod* v);
int (*mod_set_param)(struct xrdp_mod* v, char* name, char* value);
+ long mod_dumby[100 - 6]; /* align, 100 minus the number of mod
+ functions above */
/* server functions */
int (*server_begin_update)(struct xrdp_mod* v);
int (*server_end_update)(struct xrdp_mod* v);
@@ -65,6 +68,14 @@ struct xrdp_mod
int box_right, int box_bottom,
int x, int y, char* data, int data_len);
int (*server_reset)(struct xrdp_mod* v, int width, int height, int bpp);
+ int (*server_query_channel)(struct xrdp_mod* v, int index,
+ char* channel_name,
+ int* channel_flags);
+ int (*server_get_channel_id)(struct xrdp_mod* v, char* name);
+ int (*server_send_to_channel)(struct xrdp_mod* v, int channel_id,
+ char* data, int data_len);
+ long server_dumby[100 - 24]; /* align, 100 minus the number of server
+ functions above */
/* common */
long handle; /* pointer to self as int */
long wm; /* struct xrdp_wm* */