<!-- $FreeBSD$ --> <!ENTITY mac.mpo "mpo"> <!ENTITY mac.thead ' <colspec colname="first" colwidth="0"> <colspec colwidth="0"> <colspec colname="last" colwidth="0"> <thead> <row> <entry>Parameter</entry> <entry>Description</entry> <entry>Locking</entry> </row> </thead> '> <!ENTITY mac.externalize.paramdefs ' <paramdef>struct label *<parameter>label</parameter></paramdef> <paramdef>char *<parameter>element_name</parameter></paramdef> <paramdef>struct sbuf *<parameter>sb</parameter></paramdef> <paramdef>int <parameter>*claimed</parameter></paramdef> '> <!ENTITY mac.externalize.tbody ' <tbody> <row> <entry><parameter>label</parameter></entry> <entry>Label to be externalized</entry> </row> <row> <entry><parameter>element_name</parameter> <entry>Name of the policy whose label should be externalized</entry> </row> <row> <entry><parameter>sb</parameter> <entry>String buffer to be filled with a text representation of label</entry> </row> <row> <entry><parameter>claimed</parameter></entry> <entry>Should be incremented when <parameter>element_data</parameter> can be filled in.</entry> </row> </tbody> '> <!ENTITY mac.externalize.para " <para>Produce an externalized label based on the label structure passed. An externalized label consists of a text representation of the label contents that can be used with userland applications and read by the user. Currently, all policies' <function>externalize</function> entry points will be called, so the implementation should check the contents of <parameter>element_name</parameter> before attempting to fill in <parameter>sb</parameter>. If <parameter>element_name</parameter> does not match the name of your policy, simply return <returnvalue>0</returnvalue>. Only return nonzero if an error occurs while externalizing the label data. Once the policy fills in <parameter>element_data</parameter>, <varname>*claimed</varname> should be incremented.</para> "> <!ENTITY mac.internalize.paramdefs ' <paramdef>struct label *<parameter>label</parameter></paramdef> <paramdef>char *<parameter>element_name</parameter></paramdef> <paramdef>char *<parameter>element_data</parameter></paramdef> <paramdef>int *<parameter>claimed</parameter></paramdef> '> <!ENTITY mac.internalize.tbody ' <tbody> <row> <entry><parameter>label</parameter></entry> <entry>Label to be filled in</entry> </row> <row> <entry><parameter>element_name</parameter></entry> <entry>Name of the policy whose label should be internalized</entry> </row> <row> <entry><parameter>element_data</parameter></entry> <entry>Text data to be internalized</entry> </row> <row> <entry><parameter>claimed</parameter></entry> <entry>Should be incremented when data can be successfully internalized.</entry> </row> </tbody> '> <!ENTITY mac.internalize.para " <para>Produce an internal label structure based on externalized label data in text format. Currently, all policies' <function>internalize</function> entry points are called when internalization is requested, so the implementation should compare the contents of <parameter>element_name</parameter> to its own name in order to be sure it should be internalizing the data in <parameter>element_data</parameter>. Just as in the <function>externalize</function> entry points, the entry point should return <returnvalue>0</returnvalue> if <parameter>element_name</parameter> does not match its own name, or when data can successfully be internalized, in which case <varname>*claimed</varname> should be incremented.</para> ">