diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2012-07-02 13:23:32 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2012-08-27 09:06:26 +0300 |
commit | c2f58492ad2df22c4eb4e6c04750010113dce567 (patch) | |
tree | 5bc19df3545dd6ff2b4d38ce8072ba5c4692f62d | |
parent | c6bd210ad0b6eb485fda25426ab9d75253439f54 (diff) |
support seamless migration
see spice-protocol for more details
commit 3838ad140a046c4ddf42fef58c9727ecfdc09f9f
-rw-r--r-- | common/client_marshallers.h | 1 | ||||
-rw-r--r-- | common/messages.h | 15 | ||||
m--------- | spice-protocol | 0 | ||||
-rw-r--r-- | spice.proto | 24 | ||||
-rw-r--r-- | spice1.proto | 10 |
5 files changed, 43 insertions, 7 deletions
diff --git a/common/client_marshallers.h b/common/client_marshallers.h index 1bd95ae..1da7ff9 100644 --- a/common/client_marshallers.h +++ b/common/client_marshallers.h @@ -42,6 +42,7 @@ typedef struct { void (*msgc_main_mouse_mode_request)(SpiceMarshaller *m, SpiceMsgcMainMouseModeRequest *msg); void (*msgc_main_agent_start)(SpiceMarshaller *m, SpiceMsgcMainAgentStart *msg); void (*msgc_main_agent_token)(SpiceMarshaller *m, SpiceMsgcMainAgentTokens *msg); + void (*msgc_main_migrate_dst_do_seamless)(SpiceMarshaller *m, SpiceMsgcMainMigrateDstDoSeamless *msg); void (*msgc_display_init)(SpiceMarshaller *m, SpiceMsgcDisplayInit *msg); void (*msgc_inputs_key_down)(SpiceMarshaller *m, SpiceMsgcKeyDown *msg); void (*msgc_inputs_key_up)(SpiceMarshaller *m, SpiceMsgcKeyUp *msg); diff --git a/common/messages.h b/common/messages.h index 6df0fc3..95549c8 100644 --- a/common/messages.h +++ b/common/messages.h @@ -67,7 +67,7 @@ typedef struct SpiceMsgMainMultiMediaTime { uint32_t time; } SpiceMsgMainMultiMediaTime; -typedef struct SpiceMsgMainMigrationBegin { +typedef struct SpiceMigrationDstInfo { uint16_t port; uint16_t sport; uint32_t host_size; @@ -77,8 +77,21 @@ typedef struct SpiceMsgMainMigrationBegin { uint8_t *pub_key_data; uint32_t cert_subject_size; uint8_t *cert_subject_data; +} SpiceMigrationDstInfo; + +typedef struct SpiceMsgMainMigrationBegin { + SpiceMigrationDstInfo dst_info; } SpiceMsgMainMigrationBegin; +typedef struct SpiceMsgMainMigrateBeginSeamless { + SpiceMigrationDstInfo dst_info; + uint32_t src_mig_version; +} SpiceMsgMainMigrateBeginSeamless; + +typedef struct SpiceMsgcMainMigrateDstDoSeamless { + uint32_t src_version; +} SpiceMsgcMainMigrateDstDoSeamless; + typedef struct SpiceMsgMainMigrationSwitchHost { uint16_t port; uint16_t sport; diff --git a/spice-protocol b/spice-protocol -Subproject c20bc58c4e44b6403b7e7a9efc4f12dee0fc100 +Subproject 3838ad140a046c4ddf42fef58c9727ecfdc09f9 diff --git a/spice.proto b/spice.proto index 271e35d..2ef4dd6 100644 --- a/spice.proto +++ b/spice.proto @@ -193,15 +193,19 @@ struct ChannelId { uint8 id; }; -channel MainChannel : BaseChannel { - server: - message { +struct DstInfo { uint16 port; uint16 sport; uint32 host_size; uint8 *host_data[host_size] @zero_terminated @marshall @nonnull; uint32 cert_subject_size; uint8 *cert_subject_data[cert_subject_size] @zero_terminated @marshall; +} @ctype(SpiceMigrationDstInfo); + +channel MainChannel : BaseChannel { + server: + message { + DstInfo dst_info; } @ctype(SpiceMsgMainMigrationBegin) migrate_begin = 101; Empty migrate_cancel; @@ -267,6 +271,14 @@ channel MainChannel : BaseChannel { uint32 num_tokens; } agent_connected_tokens; + message { + DstInfo dst_info; + uint32 src_mig_version; + } migrate_begin_seamless; + + Empty migrate_dst_seamless_ack; + Empty migrate_dst_seamless_nack; + client: message { uint64 cache_size; @@ -293,6 +305,12 @@ channel MainChannel : BaseChannel { } @ctype(SpiceMsgcMainAgentTokens) agent_token; Empty migrate_end; + + message { + uint32 src_version; + } migrate_dst_do_seamless; + + Empty migrate_connected_seamless; }; enum8 clip_type { diff --git a/spice1.proto b/spice1.proto index 2ed1058..2d22cdf 100644 --- a/spice1.proto +++ b/spice1.proto @@ -161,9 +161,7 @@ struct ChannelId { uint8 id; }; -channel MainChannel : BaseChannel { - server: - message { +struct DstInfo { uint16 port; uint16 sport; uint32 host_offset @zero; @@ -173,6 +171,12 @@ channel MainChannel : BaseChannel { uint32 pub_key_size @minor(1); uint8 host_data[host_size] @as_ptr @zero_terminated; uint8 pub_key_data[pub_key_size] @minor(1) @as_ptr @zero_terminated; +} @ctype(SpiceMigrationDstInfo); + +channel MainChannel : BaseChannel { + server: + message { + DstInfo dst_info; } @ctype(SpiceMsgMainMigrationBegin) migrate_begin = 101; Empty migrate_cancel; |