summaryrefslogtreecommitdiffstats
path: root/server/spice.h
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2010-08-26 15:14:05 +0200
committerAlexander Larsson <alexl@redhat.com>2010-09-02 10:22:41 +0200
commit0c6d654c2f67795fe5c3229bb615ab2bd99ef7a4 (patch)
tree20fa805160343ebedbeb3e61b726db3ecff67f7b /server/spice.h
parentfc2a84eb5beb4424d99121e2ed79c6bebefaf27e (diff)
downloadspice-0c6d654c2f67795fe5c3229bb615ab2bd99ef7a4.tar.gz
spice-0c6d654c2f67795fe5c3229bb615ab2bd99ef7a4.tar.xz
spice-0c6d654c2f67795fe5c3229bb615ab2bd99ef7a4.zip
Add API to turn on backwards compatibility mode
When upgrading a cluster of machines you typically do this by upgrading a set of machines at a time, making the new machines run the new software version, but in a fashion compatible with the old versions (in terms of e.g. migration). Then when all machines are upgrades, any new features in the new version can be enabled. This API allows qemu to limit the set of features that spice uses to those compatible with an older version, in order to do an upgrade like this. Right now it doesn't really do much, since we don't keep compat with 0.4.0 atm (although that may be added later). There is no guarantee that any future version of spice support being compatible with any previous version. However, we will always support compatibility with the previous major version so that clusters can be upgraded step by step.
Diffstat (limited to 'server/spice.h')
-rw-r--r--server/spice.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/server/spice.h b/server/spice.h
index 65683a36..6f4c7820 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -307,6 +307,17 @@ uint32_t spice_server_record_get_samples(SpiceRecordInstance *sin,
/* spice server setup */
+/* Don't use features incompatible with a specific spice
+ version, so that migration to/from that version works. */
+typedef enum {
+ SPICE_COMPAT_VERSION_0_4 = 0,
+ SPICE_COMPAT_VERSION_0_6 = 1,
+} spice_compat_version_t;
+
+#define SPICE_COMPAT_VERSION_CURRENT SPICE_COMPAT_VERSION_0_6
+
+spice_compat_version_t spice_get_current_compat_version(void);
+
typedef struct RedsState SpiceServer;
SpiceServer *spice_server_new(void);
int spice_server_init(SpiceServer *s, SpiceCoreInterface *core);
@@ -315,6 +326,8 @@ void spice_server_destroy(SpiceServer *s);
#define SPICE_ADDR_FLAG_IPV4_ONLY (1 << 0)
#define SPICE_ADDR_FLAG_IPV6_ONLY (1 << 1)
+int spice_server_set_compat_version(SpiceServer *s,
+ spice_compat_version_t version);
int spice_server_set_port(SpiceServer *s, int port);
void spice_server_set_addr(SpiceServer *s, const char *addr, int flags);
int spice_server_set_noauth(SpiceServer *s);