static void domcreate_complete(libxl__egc *egc, libxl__domain_create_state *dcs, int rc) { STATE_AO_GC(dcs->ao); if (rc) { if (dcs->guest_domid) { dcs->dds.ao = ao; dcs->dds.domid = dcs->guest_domid; dcs->dds.callback = domcreate_destruction_cb; libxl__domain_destroy(egc, &dcs->dds); return; } dcs->guest_domid = -1; } dcs->callback(egc, dcs, rc, dcs->guest_domid); }
static void domcreate_complete(libxl__egc *egc, libxl__domain_create_state *dcs, int rc) { STATE_AO_GC(dcs->ao); libxl_domain_config *const d_config = dcs->guest_config; if (!rc && d_config->b_info.exec_ssidref) rc = xc_flask_relabel_domain(CTX->xch, dcs->guest_domid, d_config->b_info.exec_ssidref); if (rc) { if (dcs->guest_domid) { dcs->dds.ao = ao; dcs->dds.domid = dcs->guest_domid; dcs->dds.callback = domcreate_destruction_cb; libxl__domain_destroy(egc, &dcs->dds); return; } dcs->guest_domid = -1; } dcs->callback(egc, dcs, rc, dcs->guest_domid); }