###############################################################################
#
# Domain creation
#
###############################################################################

declare_domain(domU_t)
domain_self_comms(domU_t)
create_domain(dom0_t, domU_t)
manage_domain(dom0_t, domU_t)
domain_comms(dom0_t, domU_t)
domain_comms(domU_t, domU_t)
migrate_domain_out(dom0_t, domU_t)
domain_self_comms(domU_t)

# Allow the hypervisor to build domains of type domU_t
xen_build_domain(domU_t)

# Device model for domU_t.  You can define distinct types for device models for
# domains of other types, or add more make_device_model lines for this type.
declare_domain(dm_dom_t)
create_domain(dom0_t, dm_dom_t)
manage_domain(dom0_t, dm_dom_t)
domain_comms(dom0_t, dm_dom_t)
make_device_model(dom0_t, dm_dom_t, domU_t)

# This is required for PCI (or other device) passthrough
delegate_devices(dom0_t, domU_t)

# Both of these domain types can be created using the default (system) role
role system_r types { domU_t dm_dom_t };
