diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index eab789ac7f..73242ac023 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -1256,3 +1256,26 @@ libxlDomainStart(libxlDriverPrivatePtr driver, virDomainObjPtr vm, virObjectUnref(cfg); return ret; } + +bool +libxlDomainDefCheckABIStability(libxlDriverPrivatePtr driver, + virDomainDefPtr src, + virDomainDefPtr dst) +{ + virDomainDefPtr migratableDefSrc = NULL; + virDomainDefPtr migratableDefDst = NULL; + libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver); + bool ret = false; + + if (!(migratableDefSrc = virDomainDefCopy(src, cfg->caps, driver->xmlopt, true)) || + !(migratableDefDst = virDomainDefCopy(dst, cfg->caps, driver->xmlopt, true))) + goto cleanup; + + ret = virDomainDefCheckABIStability(migratableDefSrc, migratableDefDst); + + cleanup: + virDomainDefFree(migratableDefSrc); + virDomainDefFree(migratableDefDst); + virObjectUnref(cfg); + return ret; +} diff --git a/src/libxl/libxl_domain.h b/src/libxl/libxl_domain.h index 979ce2afd9..693900895b 100644 --- a/src/libxl/libxl_domain.h +++ b/src/libxl/libxl_domain.h @@ -139,4 +139,9 @@ libxlDomainStart(libxlDriverPrivatePtr driver, bool start_paused, int restore_fd); +bool +libxlDomainDefCheckABIStability(libxlDriverPrivatePtr driver, + virDomainDefPtr src, + virDomainDefPtr dst); + #endif /* LIBXL_DOMAIN_H */