diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index eab789ac7f91d957c9afcced9f967c9fbd0da4c5..73242ac0237227d184c20f946364ad7e761bf075 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 979ce2afd9fadec4430df671806008128ecbc4b3..693900895b598c1575c5db794199795173d904ea 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 */