diff options
-rw-r--r-- | server/Makefile.am | 1 | ||||
-rw-r--r-- | server/migration_protocol.h | 49 |
2 files changed, 50 insertions, 0 deletions
diff --git a/server/Makefile.am b/server/Makefile.am index e7b49775..16c8b6d6 100644 --- a/server/Makefile.am +++ b/server/Makefile.am @@ -72,6 +72,7 @@ libspice_server_la_SOURCES = \ red_dispatcher.h \ main_dispatcher.c \ main_dispatcher.h \ + migration_protocol.h \ red_memslots.c \ red_memslots.h \ red_parse_qxl.c \ diff --git a/server/migration_protocol.h b/server/migration_protocol.h new file mode 100644 index 00000000..2b7f4c2c --- /dev/null +++ b/server/migration_protocol.h @@ -0,0 +1,49 @@ +/* + Copyright (C) 2012 Red Hat, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _H_MIGRATION_PROTOCOL +#define _H_MIGRATION_PROTOCOL + +/* ************************************************ + * src-server to dst-server migration data messages + * ************************************************/ + +/* increase the version when the version of any + * of the migration data messages is increased */ +#define SPICE_MIGRATION_PROTOCOL_VERSION ~0 + +typedef struct __attribute__ ((__packed__)) SpiceMigrateDataHeader { + uint32_t magic; + uint32_t version; +} SpiceMigrateDataHeader; + +static inline int migration_protocol_validate_header(SpiceMigrateDataHeader *header, + uint32_t magic, + uint32_t version) +{ + if (header->magic != magic) { + spice_error("bad magic %u (!= %u)", header->magic, magic); + return FALSE; + } + if (header->version > version) { + spice_error("unsupported version %u (> %u)", header->version, version); + return FALSE; + } + return TRUE; +} + +#endif |