# Domain creation and setup
#
################################################################################
-# declare_domain(type)
+# declare_domain(type, attrs...)
# Declare a type as a domain type, and allow basic domain setup
define(`declare_domain', `
- type $1, domain_type;
+ type $1, domain_type`'ifelse(`$#', `1', `', `,shift($@)');
allow $1 $1:grant { query setup };
allow $1 $1:mmu { adjust physmap map_read map_write stat pinpage };
allow $1 $1:hvm { getparam setparam };
type xen_t, xen_type, mls_priv;
# Domain 0
-type dom0_t, domain_type, mls_priv;
+declare_domain(dom0_t, mls_priv);
# Untracked I/O memory (pseudo-domain)
type domio_t, xen_type;
setbool setsecparam add_ocontext del_ocontext };
allow dom0_t dom0_t:domain { getdomaininfo getvcpuinfo getvcpuaffinity };
-allow dom0_t dom0_t:grant { query setup };
-allow dom0_t dom0_t:mmu { adjust physmap map_read map_write stat pinpage };
allow dom0_t dom0_t:resource { add remove };
admin_device(dom0_t, device_t)