mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
python/migration: Update validation logic to understand a v3 stream
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
1 parent
6f71b5b150
commit
9a0749da8f
1 file changed
+22
-4
@@ -119,6 +119,7 @@ class VerifyLibxc(VerifyBase):
|
||||
def __init__(self, info, read):
|
||||
VerifyBase.__init__(self, info, read)
|
||||
|
||||
self.version = 0
|
||||
self.squashed_pagedata_records = 0
|
||||
|
||||
|
||||
@@ -145,9 +146,12 @@ class VerifyLibxc(VerifyBase):
|
||||
raise StreamError("Bad image id: Expected 0x%x, got 0x%x" %
|
||||
(IHDR_IDENT, ident))
|
||||
|
||||
if version != 2:
|
||||
raise StreamError("Unknown image version: Expected 2, got %d" %
|
||||
(version, ))
|
||||
if not (2 <= version <= 3):
|
||||
raise StreamError(
|
||||
"Unknown image version: Expected 2 <= ver <= 3, got %d" %
|
||||
(version, ))
|
||||
|
||||
self.version = version
|
||||
|
||||
if options & IHDR_OPT_RESZ_MASK:
|
||||
raise StreamError("Reserved bits set in image options field: 0x%x" %
|
||||
@@ -164,7 +168,8 @@ class VerifyLibxc(VerifyBase):
|
||||
"Stream is not native endianess - unable to validate")
|
||||
|
||||
endian = ["little", "big"][options & IHDR_OPT_LE]
|
||||
self.info("Libxc Image Header: %s endian" % (endian, ))
|
||||
self.info("Libxc Image Header: Version %d, %s endian" %
|
||||
(version, endian))
|
||||
|
||||
|
||||
def verify_dhdr(self):
|
||||
@@ -424,6 +429,16 @@ class VerifyLibxc(VerifyBase):
|
||||
raise RecordError("Found checkpoint dirty pfn list record in stream")
|
||||
|
||||
|
||||
def verify_record_static_data_end(self, content):
|
||||
""" static data end record """
|
||||
|
||||
if len(content) != 0:
|
||||
raise RecordError("End record with non-zero length")
|
||||
|
||||
if self.version < 3:
|
||||
raise RecordError("Static data end record found in v2 stream")
|
||||
|
||||
|
||||
record_verifiers = {
|
||||
REC_TYPE_end:
|
||||
VerifyLibxc.verify_record_end,
|
||||
@@ -465,4 +480,7 @@ record_verifiers = {
|
||||
VerifyLibxc.verify_record_checkpoint,
|
||||
REC_TYPE_checkpoint_dirty_pfn_list:
|
||||
VerifyLibxc.verify_record_checkpoint_dirty_pfn_list,
|
||||
|
||||
REC_TYPE_static_data_end:
|
||||
VerifyLibxc.verify_record_static_data_end,
|
||||
}
|
||||