Date: Wed, 24 Jul 2002 17:25:14 -0700 (PDT) From: Chris Costello <chris@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 14874 for review Message-ID: <200207250025.g6P0PEtI027565@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=14874 Change 14874 by chris@chris_holly on 2002/07/24 17:24:59 o Update/augment descriptions with descriptions from Robert's post to cboss-doc. o Mark up remaining label operations except those for processes (to be committed later this evening) o Credit Robert in authors for his description paragraphs. o Update mac.ent to include locking column and colspec's so that entries can span multiple columns. Affected files ... .. //depot/projects/trustedbsd/doc/en_US.ISO8859-1/books/developers-handbook/mac.ent#3 edit .. //depot/projects/trustedbsd/doc/en_US.ISO8859-1/books/developers-handbook/mac/chapter.sgml#7 edit Differences ... ==== //depot/projects/trustedbsd/doc/en_US.ISO8859-1/books/developers-handbook/mac.ent#3 (text+ko) ==== @@ -1,9 +1,14 @@ <!ENTITY mac.mpo "mpo"> -<!ENTITY mac.thead " +<!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> -"> +'> ==== //depot/projects/trustedbsd/doc/en_US.ISO8859-1/books/developers-handbook/mac/chapter.sgml#7 (text+ko) ==== @@ -41,11 +41,22 @@ <author> <firstname>Chris</firstname> <surname>Costello</surname> + <affiliation> <orgname>TrustedBSD Project</orgname> <address><email>chris@FreeBSD.org</email></address> </affiliation> </author> + + <author> + <firstname>Robert</firstname> + <surname>Watson</surname> + + <affiliation> + <orgname>TrustedBSD Project</orgname> + <address><email>rwatson@FreeBSD.org</email></address> + </affiliation> + </author> </authorgroup> </chapterinfo> @@ -118,7 +129,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init</function></funcdef> <paramdef>struct mac_policy_conf @@ -127,7 +138,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -139,14 +150,8 @@ </tgroup> </informaltable> - <para>This is the entry point called after the policy has been - added to the list, but before the list is unlocked. At the - point a module would typically initialize its own internal - structures, print any copyright messages, etc.</para> - - <note><para>A <quote>module loaded</quote> message is already - printed when a policy is loaded so any further messages of - that nature are probably unnecessary.</para></note> + <para>Policy load event. The policy list mutex is held, so + caution should be applied.</para> </sect3> <sect3 id="mpo-destroy"> @@ -154,7 +159,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy</function></funcdef> <paramdef>struct mac_policy_conf @@ -163,7 +168,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -175,9 +180,8 @@ </tgroup> </informaltable> - <para>This entry point is called when the module is being - unloaded. At this point the policy would typically be - freeing internal storage, etc.</para> + <para>Policy load event. The policy list mutex is held, so + caution should be applied.</para> </sect3> </sect2> @@ -191,7 +195,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_bpfdesc</function></funcdef> <paramdef>struct bpf_d @@ -202,7 +206,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -219,7 +223,8 @@ </tgroup> </informaltable> - <para>...</para> + <para>Initialize the label on a newly instantiated bpfdesc (BPF + descriptor)</para> </sect3> <sect3 id="mac-mpo-init-devfsdirent"> @@ -227,7 +232,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_devfsdirent</function></funcdef> <paramdef>struct devfs_dirent @@ -238,7 +243,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -255,7 +260,8 @@ </tgroup> </informaltable> - <para>...</para> + <para>Initialize the label on a newly instantiated devfs + entry.</para> </sect3> <sect3 id="mac-mpo-init-ifnet"> @@ -263,7 +269,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_ifnet</function></funcdef> <paramdef>struct ifnet @@ -274,7 +280,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -291,7 +297,8 @@ </tgroup> </informaltable> - <para>...</para> + <para>Initialize the label on a newly instantiated network + interface.</para> </sect3> <sect3 id="mac-mpo-init-ipq"> @@ -299,7 +306,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_ipq</function></funcdef> <paramdef>struct ipq @@ -310,7 +317,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -326,6 +333,9 @@ </tbody> </tgroup> </informaltable> + + <para>Initialize the label on a newly instantiated IP fragment + reassembly queue.</para> </sect3> <sect3 id="mac-mpo-init-mbuf"> @@ -333,18 +343,19 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_mbuf</function></funcdef> <paramdef>struct mbuf *<parameter>mbuf</parameter></paramdef> + <paramdef>int <parameter>how</parameter></paramdef> <paramdef>struct label *<parameter>label</parameter></paramdef> </funcprototype> </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -354,13 +365,29 @@ </row> <row> + <entry><parameter>how</parameter></entry> + <entry>Blocking/non-blocking &man.malloc.9; see + below</entry> + </row> + + <row> <entry><parameter>label</parameter></entry> - <entry>New label to apply</entry> + <entry>Policy label to initialize</entry> </tbody> </tgroup> </informaltable> - <para>...</para> + <para>Initialize the label on a newly instantiated mbuf packet + header (<parameter>mbuf</parameter>). The + <parameter>how</parameter> field may be one of + <symbol>M_WAITOK</symbol> and <symbol>M_NOWAIT</symbol>, and + should be employed to avoid performing a blocking + &man.malloc.9; during this initialization call. Mbuf + allocation frequently occurs in performance sensitive + environments, and the implementation should be careful to + avoid blocking or long-lived operations. This entry point + is permitted to fail resulting in the failure to allocate + the mbuf header.</para> </sect3> <sect3 id="mac-mpo-init-mount"> @@ -368,7 +395,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_mount</function></funcdef> <paramdef>struct mount @@ -382,7 +409,7 @@ <!-- XXX: Wording on label descriptions. --> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -393,18 +420,21 @@ <row> <entry><parameter>mntlabel</parameter></entry> - <entry>New file system mount point label</entry> + <entry>Policy label to be initialized for the mount + itself</entry> </row> <row> <entry><parameter>fslabel</parameter></entry> - <entry>New file system label</entry> + <entry>Policy label to be initialized for the file + system</entry> </row> </tbody> </tgroup> </informaltable> - <para>...</para> + <para>Initialize the labels on a newly instantiated mount + point.</para> </sect3> <sect3 id="mac-mpo-init-socket"> @@ -412,7 +442,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_socket</function></funcdef> <paramdef>struct socket @@ -425,7 +455,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -447,7 +477,8 @@ </tgroup> </informaltable> - <para>...</para> + <para>Initialize the labels on a newly instantiated + socket.</para> </sect3> <sect3 id="mac-mpo-init-subject"> @@ -455,7 +486,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_subject</function></funcdef> <paramdef>struct ucred @@ -466,7 +497,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -483,10 +514,7 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should allocate and - initialize any internal storage for a new label for a - subject (user) credential. No label information should be - filled out.</para> + <para>Initialize the labels on a newly instantiated subject.</para> </sect3> <sect3 id="mac-mpo-init-temp"> @@ -494,7 +522,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_temp</function></funcdef> <paramdef>struct label @@ -503,7 +531,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -515,9 +543,9 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should allocate - storage for a label meant for temporary use. No label - information should be filled out.</para> + <para>Initialize a newly instantiated temporary label; + temporary labels are frequently used to hold label update + requests.</para> </sect3> <sect3 id="mac-mpo-init-vnode"> @@ -525,7 +553,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_init_vnode</function></funcdef> <paramdef>struct vnode @@ -536,7 +564,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -553,9 +581,7 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should allocate and - initialize any internal storage necessary for a new file - system object label.</para> + <para>Initialize the label on a newly instantiated vnode.</para> </sect3> <sect3 id="mac-mpo-destroy-bpfdesc"> @@ -563,7 +589,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_bpfdesc</function></funcdef> <paramdef>struct bpf_d @@ -574,7 +600,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -591,10 +617,10 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> so that it may be - destroyed.</para> + <para>Destroy the label on a BPF descriptor. In this entry + point, a policy module should free any internal storage + associated with <parameter>label</parameter> so that it may + be destroyed.</para> </sect3> <sect3 id="mac-mpo-destroy-devfsdirent"> @@ -602,7 +628,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_devfsdirent</function></funcdef> <paramdef>struct devfs_dirent @@ -613,7 +639,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -630,9 +656,10 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage asociated with <parameter>label</parameter> - so that it may be destroyed.</para> + <para>Destroy the label on a devfs entry. In this entry + point, a policy module should free any internal storage + asociated with <parameter>label</parameter> so that it may + be destroyed.</para> </sect3> <sect3 id="mac-mpo-destroy-ifnet"> @@ -640,7 +667,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_ifnet</function></funcdef> <paramdef>struct ifnet @@ -651,7 +678,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -668,10 +695,10 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> so that it may be - destroyed.</para> + <para>Destroy the label on a removed interface. In this entry + point, a policy module should free any internal storage + associated with <parameter>label</parameter> so that it may + be destroyed.</para> </sect3> <sect3 id="mac-mpo-destroy-ipq"> @@ -679,7 +706,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_ipq</function></funcdef> <paramdef>struct ipq @@ -690,7 +717,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -707,10 +734,10 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> so that it may be - destroyed.</para> + <para>Destroy the label on an IP fragment queue. In this + entry point, a policy module should free any internal + storage associated with <parameter>label</parameter> so that + it may be destroyed.</para> </sect3> <sect3 id="mac-mpo-destroy-mbuf"> @@ -718,7 +745,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_mbuf</function></funcdef> <paramdef>struct mbuf @@ -729,7 +756,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -746,10 +773,10 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> so that it may be - destroyed.</para> + <para>Destroy the label on an mbuf header. In this entry + point, a policy module should free any internal storage + associated with <parameter>label</parameter> so that it may + be destroyed.</para> </sect3> <sect3 id="mac-mpo-destroy-mount"> @@ -757,7 +784,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_mount</function></funcdef> <paramdef>struct mount @@ -770,7 +797,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -792,9 +819,9 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free the - internal storage associated with - <parameter>mntlabel</parameter> and + <para>Destroy the labels on a mount point. In this entry + point, a policy module should free the internal storage + associated with <parameter>mntlabel</parameter> and <parameter>fslabel</parameter> so that they may be destroyed.</para> </sect3> @@ -804,7 +831,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_socket</function></funcdef> <paramdef>struct socket @@ -817,7 +844,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -839,9 +866,9 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> and + <para>Destroy the labels on a socket. In this entry point, a + policy module should free any internal storage associated + with <parameter>label</parameter> and <parameter>peerlabel</parameter> so that they may be destroyed.</para> </sect3> @@ -851,7 +878,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_subject</function></funcdef> <paramdef>struct ucred @@ -862,7 +889,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -879,9 +906,9 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> so that it may be + <para>Destroy the label on a credential. In this entry point, + a policy module should free any internal storage associated + with <parameter>label</parameter> so that it may be destroyed.</para> </sect3> @@ -890,7 +917,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_temp</function></funcdef> <paramdef>struct label @@ -899,7 +926,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -911,10 +938,10 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with the temporary label - <parameter>label</parameter> so that it may be - destroyed.</para> + <para>Destroy a temporary label. In this entry point, a + policy module should free any internal storage associated + with the temporary label <parameter>label</parameter> so + that it may be destroyed.</para> </sect3> <sect3 id="mac-mpo-destroy-vnode"> @@ -922,7 +949,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_destroy_vnode</function></funcdef> <paramdef>struct vnode @@ -933,7 +960,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -950,9 +977,9 @@ </tgroup> </informaltable> - <para>In this entry point, a policy module should free any - internal storage associated with - <parameter>label</parameter> so that it may be + <para>Destroy the label on a vnode. In this entry point, a + policy module should free any internal storage associated + with <parameter>label</parameter> so that it may be destroyed.</para> </sect3> @@ -961,7 +988,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_externalize</function></funcdef> <paramdef>struct label @@ -972,7 +999,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -988,8 +1015,10 @@ </tbody> </informaltable> - <!-- XXX: Is Adam working on changing this mechanism? --> - <para>...</para> + <para>Given an internalized subject or object label, fill out + an externalized label. This call is permitted to fail. + This call will be obsoleted by the new userland and extended + attribute interfaces for the MAC framework.</para> </sect3> <sect3 id="mac-mpo-internalize"> @@ -997,7 +1026,7 @@ <funcsynopsis> <funcprototype> - <funcdef>static void + <funcdef>void <function>&mac.mpo;_internalize</function></funcdef> <paramdef>struct label @@ -1008,7 +1037,7 @@ </funcsynopsis> <informaltable> - <tgroup cols="2"> + <tgroup cols="3"> &mac.thead; <tbody> @@ -1025,8 +1054,1814 @@ </tgroup> </informaltable> - <!-- XXX: Is Adam working on this interface? --> - <para>...</para> + <para>Given an externalized subject or object label, likely + from userland, internalize the label. The entry point + implementation should handle incorrect or corrupted labels. + This call is permitted to fail. This call will be obsoleted + by the new userland and extended attribute interfaces for + the MAC framework.</para> + </sect3> + </sect2> + + <sect2 id="mac-fs-label-event-ops"> + <title>File System Object Labeling Event Operations</title> + + <para>...</para> + + <sect3 id="mac-mpo-create-devfs-device"> + <title><function>&mac.mpo;_create_devfs_device</function></title> + + <funcsynopsis> + <funcprototype> + <funcdef>void + <function>&mac.mpo;_create_devfs_device</function></funcdef> + + <paramdef>dev_t <parameter>dev</parameter></paramdef> + <paramdef>struct devfs_dirent + *<parameter>devfs_dirent</parameter></paramdef> + <paramdef>struct label + *<parameter>label</parameter></paramdef> + </funcprototype> + </funcsynopsis> + + <informaltable> + <tgroup cols="3"> + &mac.thead; + + <tbody> + <row> + <entry><parameter>dev</parameter></entry> + <entry>Device corresponding with + <parameter>devfs_dirent</parameter></entry> + </row> + + <row> + <entry><parameter>devfs_dirent</parameter></entry> + <entry>Devfs directory entry to be labeled.</entry> + </row> + + <row> + <entry><parameter>label</parameter></entry> + <entry>Label for <parameter>devfs_dirent</parameter> + to be filled in.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Fill out the label on a devfs_dirent being created for + the passed device. This call will be made when the device + file system is mounted, regenerated, or a new device is made + available.</para> + </sect3> + + <sect3 id="mac-mpo-create-devfs-directory"> + <title><function>&mac.mpo;_create_devfs_directory</function></title> + + <funcsynopsis> + <funcprototype> + <funcdef>void + <function>&mac.mpo;_create_devfs_directory</function></funcdef> + + <paramdef>char *<parameter>dirname</parameter></paramdef> + <paramdef>int <parameter>dirnamelen</parameter></paramdef> + <paramdef>struct devfs_dirent + *<parameter>devfs_dirent</parameter></paramdef> + <paramdef>struct label + *<parameter>label</parameter></paramdef> + </funcprototype> + </funcsynopsis> + + <informaltable> + <tgroup cols="3"> + &mac.thead; + + <tbody> + <row> + <entry><parameter>dirname</parameter></entry> + <entry>Name of directory being created</entry> + </row> + + <row> + <entry><parameter>namelen</parameter></entry> + <entry>Length of string + <parameter>dirname</parameter></entry> + </row> + + <row> + <entry><parameter>devfs_dirent</parameter></entry> + <entry>Devfs directory entry for directory being + created.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Fill out the label on a devfs_dirent being created for + the passed directory. This call will be made when the device + file system is mounted, regenerated, or a new device + requiring a specific directory hierarchy is made + available.</para> + </sect3> + + <sect3 id="mac-mpo-create-devfs-vnode"> + <title><function>&mac.mpo;_create_devfs_vnode</function></title> + + <funcsynopsis> + <funcprototype> + <funcdef>void + <function>&mac.mpo;_create_devfs_vnode</function></funcdef> + + <paramdef>struct devfs_dirent + *<parameter>devfs_dirent</parameter></paramdef> + <paramdef>struct label + *<parameter>direntlabel</parameter></paramdef> + <paramdef>struct vnode + *<parameter>vp</parameter></paramdef> + <paramdef>struct label + *<parameter>vnodelabel</parameter></paramdef> + </funcprototype> + </funcsynopsis> + + <informaltable> + <tgroup cols="3"> + &mac.thead; + + <tbody> + <row> + <entry><parameter>devfs_dirent</parameter></entry> + <entry>Object; devfs directory entry</entry> + </row> + + <row> + <entry><parameter>direntlabel</parameter></entry> + <entry>Policy label for + <parameter>devfs_dirent</parameter></entry> + </row> + + <row> + <entry><parameter>vp</parameter></entry> + <entry>Object; file system object being labeled</entry> + </row> + + <row> + <entry><parameter>vnodelabel</parameter></entry> + <entry>Policy label to be filled in for + <parameter>vp</parameter></entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Fill out the label on the vnode being created for the + passed devfs_dirent. This call will be made when a vnode is + required to represent the specified devfs_dirent in a + mounted devfs instance.</para> + </sect3> + + <sect3 id="mac-mpo-create-vnode-from-vnode"> + <title><function>&mac.mpo;_create_vnode_from_vnode</function></title> + + <funcsynopsis> + <funcprototype> >>> TRUNCATED FOR MAIL (1000 lines) <<< To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207250025.g6P0PEtI027565>