<!-- Common Interface Language (CIL) Reference Guide --> <!-- xen_statements.xml --> <sect1> <title>Xen Statements</title> <para>Policy version 30 introduced the <literal><link linkend="devicetreecon">devicetreecon</link></literal> statement and also expanded the existing I/O memory range to 64 bits in order to support hardware with more than 44 bits of physical address space (32-bit count of 4K pages).</para> <para>See the <ulink url="http://xenbits.xen.org/docs/4.2-testing/misc/xsm-flask.txt">"XSM/FLASK Configuration"</ulink> document for further information (<ulink url="http://xenbits.xen.org/docs/4.2-testing/misc/xsm-flask.txt"></ulink>)</para> <sect2 id="iomemcon"> <title>iomemcon</title> <para>Label i/o memory. This may be a single memory location or a range.</para> <para><emphasis role="bold">Statement definition:</emphasis></para> <programlisting><![CDATA[(iomemcon mem_addr|(mem_low mem_high) context_id)]]></programlisting> <para><emphasis role="bold">Where:</emphasis></para> <informaltable frame="all"> <tgroup cols="2"> <colspec colwidth="2 *"/> <colspec colwidth="6 *"/> <tbody> <row> <entry> <para><literal>iomemcon</literal></para> </entry> <entry> <para>The <literal>iomemcon</literal> keyword.</para> </entry> </row> <row> <entry> <para><literal>mem_addr |</literal></para> <para><literal>(mem_low mem_high)</literal></para> </entry> <entry> <para>A single memory address to apply the context, or a range of addresses.</para> <para>The entries must consist of numerics <literal>[0-9]</literal>.</para> </entry> </row> <row> <entry> <para><literal>context_id</literal></para> </entry> <entry> <para>A previously declared <literal><link linkend="context">context</link></literal> identifier or an anonymous security context (<literal><link linkend="user">user</link> <link linkend="role">role</link> <link linkend="type">type</link> <link linkend="levelrange">levelrange</link></literal>), the range MUST be defined whether the policy is MLS/MCS enabled or not.</para> </entry> </row> </tbody></tgroup> </informaltable> <para><emphasis role="bold">Example:</emphasis></para> <para>An anonymous context for a memory address range of <literal>0xfebe0-0xfebff</literal>:</para> <programlisting><![CDATA[(iomemcon (1043424 1043455) (unconfined.user object_r unconfined.object low_low))]]></programlisting> </sect2> <sect2 id="ioportcon"> <title>ioportcon</title> <para>Label i/o ports. This may be a single port or a range.</para> <para><emphasis role="bold">Statement definition:</emphasis></para> <programlisting><![CDATA[(ioportcon port|(port_low port_high) context_id)]]></programlisting> <para><emphasis role="bold">Where:</emphasis></para> <informaltable frame="all"> <tgroup cols="2"> <colspec colwidth="2.25 *"/> <colspec colwidth="6 *"/> <tbody> <row> <entry> <para><literal>ioportcon</literal></para> </entry> <entry> <para>The <literal>ioportcon</literal> keyword.</para> </entry> </row> <row> <entry> <para><literal>port |</literal></para> <para><literal>(port_low port_high)</literal></para> </entry> <entry> <para>A single port to apply the context, or a range of ports.</para> <para>The entries must consist of numerics <literal>[0-9]</literal>.</para> </entry> </row> <row> <entry> <para><literal>context_id</literal></para> </entry> <entry> <para>A previously declared <literal><link linkend="context">context</link></literal> identifier or an anonymous security context (<literal><link linkend="user">user</link> <link linkend="role">role</link> <link linkend="type">type</link> <link linkend="levelrange">levelrange</link></literal>), the range MUST be defined whether the policy is MLS/MCS enabled or not.</para> </entry> </row> </tbody></tgroup> </informaltable> <para><emphasis role="bold">Example:</emphasis></para> <para>An anonymous context for a single port of :<literal>0xecc0</literal>:</para> <programlisting><![CDATA[(ioportcon 60608 (unconfined.user object_r unconfined.object low_low))]]></programlisting> </sect2> <sect2 id="pcidevicecon"> <title>pcidevicecon</title> <para>Label a PCI device.</para> <para><emphasis role="bold">Statement definition:</emphasis></para> <programlisting><![CDATA[(pcidevicecon device context_id)]]></programlisting> <para><emphasis role="bold">Where:</emphasis></para> <informaltable frame="all"> <tgroup cols="2"> <colspec colwidth="2 *"/> <colspec colwidth="6 *"/> <tbody> <row> <entry> <para><literal>pcidevicecon</literal></para> </entry> <entry> <para>The <literal>pcidevicecon</literal> keyword.</para> </entry> </row> <row> <entry> <para><literal>device</literal></para> </entry> <entry> <para>The device number.The entries must consist of numerics <literal>[0-9]</literal>.</para> </entry> </row> <row> <entry> <para><literal>context_id</literal></para> </entry> <entry> <para>A previously declared <literal><link linkend="context">context</link></literal> identifier or an anonymous security context (<literal><link linkend="user">user</link> <link linkend="role">role</link> <link linkend="type">type</link> <link linkend="levelrange">levelrange</link></literal>), the range MUST be defined whether the policy is MLS/MCS enabled or not.</para> </entry> </row> </tbody></tgroup> </informaltable> <para><emphasis role="bold">Example:</emphasis></para> <para>An anonymous context for a pci device address of <literal>0xc800</literal>:</para> <programlisting><![CDATA[(pcidevicecon 51200 (unconfined.user object_r unconfined.object low_low))]]></programlisting> </sect2> <sect2 id="pirqcon"> <title>pirqcon</title> <para>Label an interrupt level.</para> <para><emphasis role="bold">Statement definition:</emphasis></para> <programlisting><![CDATA[(pirqcon irq_level context_id)]]></programlisting> <para><emphasis role="bold">Where:</emphasis></para> <informaltable frame="all"> <tgroup cols="2"> <colspec colwidth="2 *"/> <colspec colwidth="6 *"/> <tbody> <row> <entry> <para><literal>pirqcon</literal></para> </entry> <entry> <para>The <literal>pirqcon</literal> keyword.</para> </entry> </row> <row> <entry> <para><literal>irq_level</literal></para> </entry> <entry> <para>The interrupt request number. The entries must consist of numerics <literal>[0-9]</literal>.</para> </entry> </row> <row> <entry> <para><literal>context_id</literal></para> </entry> <entry> <para>A previously declared <literal><link linkend="context">context</link></literal> identifier or an anonymous security context (<literal><link linkend="user">user</link> <link linkend="role">role</link> <link linkend="type">type</link> <link linkend="levelrange">levelrange</link></literal>), the range MUST be defined whether the policy is MLS/MCS enabled or not.</para> </entry> </row> </tbody></tgroup> </informaltable> <para><emphasis role="bold">Example:</emphasis></para> <para>An anonymous context for IRQ 33:</para> <programlisting><![CDATA[(pirqcon 33 (unconfined.user object_r unconfined.object low_low))]]></programlisting> </sect2> <sect2 id="devicetreecon"> <title>devicetreecon</title> <para>Label device tree nodes.</para> <para><emphasis role="bold">Statement definition:</emphasis></para> <programlisting><![CDATA[(devicetreecon path context_id)]]></programlisting> <para><emphasis role="bold">Where:</emphasis></para> <informaltable frame="all"> <tgroup cols="2"> <colspec colwidth="2 *"/> <colspec colwidth="6 *"/> <tbody> <row> <entry> <para><literal>devicetreecon</literal></para> </entry> <entry> <para>The <literal>devicetreecon</literal> keyword.</para> </entry> </row> <row> <entry> <para><literal>path</literal></para> </entry> <entry> <para>The device tree path. If this contains spaces enclose within <literal>""</literal>.</para> </entry> </row> <row> <entry> <para><literal>context_id</literal></para> </entry> <entry> <para>A previously declared <literal><link linkend="context">context</link></literal> identifier or an anonymous security context (<literal><link linkend="user">user</link> <link linkend="role">role</link> <link linkend="type">type</link> <link linkend="levelrange">levelrange</link></literal>), the range MUST be defined whether the policy is MLS/MCS enabled or not.</para> </entry> </row> </tbody></tgroup> </informaltable> <para><emphasis role="bold">Example:</emphasis></para> <para>An anonymous context for the specified path:</para> <programlisting><![CDATA[(devicetreecon "/this is/a/path" (unconfined.user object_r unconfined.object low_low))]]></programlisting> </sect2> </sect1>