diff options
author | Alon Levy <alevy@redhat.com> | 2010-09-15 15:55:11 +0200 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2010-12-07 13:31:42 +0200 |
commit | d99ec6c35b02a64950c4397644a9a81fad1d4492 (patch) | |
tree | e80d4de05df2ba340ef277d2a792236c6f8ef967 /server/reds.c | |
parent | 757686384fc47746891b6280b9f27404420c8dea (diff) | |
download | spice-d99ec6c35b02a64950c4397644a9a81fad1d4492.tar.gz spice-d99ec6c35b02a64950c4397644a9a81fad1d4492.tar.xz spice-d99ec6c35b02a64950c4397644a9a81fad1d4492.zip |
smartcard: server side (not enabled yet)
Diffstat (limited to 'server/reds.c')
-rw-r--r-- | server/reds.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/server/reds.c b/server/reds.c index 3edf474f..b4ec6e14 100644 --- a/server/reds.c +++ b/server/reds.c @@ -59,6 +59,9 @@ #ifdef USE_TUNNEL #include "red_tunnel_worker.h" #endif +#ifdef USE_SMARTCARD +#include "smartcard.h" +#endif SpiceCoreInterface *core = NULL; static SpiceKbdInstance *keyboard = NULL; @@ -1251,6 +1254,7 @@ static int read_from_vdi_port(void) VDIReadBuf *dispatch_buf; int total = 0; int n; + if (inside_call) { return 0; } @@ -3432,9 +3436,13 @@ __visible__ void spice_server_char_device_wakeup(SpiceCharDeviceInstance* sin) } #define SUBTYPE_VDAGENT "vdagent" +#define SUBTYPE_SMARTCARD "smartcard" const char *spice_server_char_device_recognized_subtypes_list[] = { SUBTYPE_VDAGENT, +#ifdef USE_SMARTCARD + SUBTYPE_SMARTCARD, +#endif NULL, }; @@ -3460,6 +3468,13 @@ static int spice_server_char_device_add_interface(SpiceServer *s, char_device->st = &vdagent_char_device_state; attach_to_red_agent(char_device); } +#ifdef USE_SMARTCARD + else if (strcmp(char_device->subtype, SUBTYPE_SMARTCARD) == 0) { + if (smartcard_device_connect(char_device) == -1) { + return -1; + } + } +#endif return 0; } @@ -3474,6 +3489,11 @@ static void spice_server_char_device_remove_interface(SpiceBaseInstance *sin) reds_agent_remove(); } } +#ifdef USE_SMARTCARD + else if (strcmp(char_device->subtype, SUBTYPE_SMARTCARD) == 0) { + smartcard_device_disconnect(char_device); + } +#endif } __visible__ int spice_server_add_interface(SpiceServer *s, @@ -3759,6 +3779,10 @@ static void do_spice_init(SpiceCoreInterface *core_interface) } inputs_init(); +#ifdef USE_SMARTCARD + smartcard_channel_init(); +#endif + reds->mouse_mode = SPICE_MOUSE_MODE_SERVER; atexit(reds_exit); } |