All of lore.kernel.org
 help / color / mirror / Atom feed
* I believe you will need this patch also to build reference policy.
@ 2011-05-03 13:32 Daniel J Walsh
  2011-05-11 12:31 ` Steve Lawrence
  0 siblings, 1 reply; 8+ messages in thread
From: Daniel J Walsh @ 2011-05-03 13:32 UTC (permalink / raw)
  To: Steve Lawrence; +Cc: SELinux

[-- Attachment #1: Type: text/plain, Size: 346 bytes --]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Otherwise you end up with a conflict.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEUEARECAAYFAk3AA98ACgkQrlYvE4MpobM0JwCYt5OI6SdmIG7GkrnNwFBpfSPm
CACffGaVis6oLfIYejhFeYSPJ+f6pbU=
=k2jf
-----END PGP SIGNATURE-----

[-- Attachment #2: checkpolicy-filename.patch --]
[-- Type: text/plain, Size: 934 bytes --]

diff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
index 427c189..1331c04 100644
--- a/checkpolicy/policy_scan.l
+++ b/checkpolicy/policy_scan.l
@@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
 {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
 {digit}+|0x{hexval}+            { return(NUMBER); }
 {alnum}*                        { return(FILENAME); }
+\.({alnum}|[_\.\-])*	        { return(FILENAME); }
 {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
 {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
 {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
-{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
+{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
 ([_\.]){alnum}+                 { return(FILENAME); }
 #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
 #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }

[-- Attachment #3: checkpolicy-filename.patch.sig --]
[-- Type: application/pgp-signature, Size: 72 bytes --]

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-03 13:32 I believe you will need this patch also to build reference policy Daniel J Walsh
@ 2011-05-11 12:31 ` Steve Lawrence
  2011-05-11 21:34   ` Daniel J Walsh
  0 siblings, 1 reply; 8+ messages in thread
From: Steve Lawrence @ 2011-05-11 12:31 UTC (permalink / raw)
  To: Daniel J Walsh; +Cc: SELinux

On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
> Otherwise you end up with a conflict.

> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
> index 427c189..1331c04 100644
> --- a/checkpolicy/policy_scan.l
> +++ b/checkpolicy/policy_scan.l
> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>  {digit}+|0x{hexval}+            { return(NUMBER); }
>  {alnum}*                        { return(FILENAME); }
> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>  ([_\.]){alnum}+                 { return(FILENAME); }
>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }

Can't these be merged? I know I merged something similar earlier, but is
it really necessary to have 3 regexs for filename?

\.?({alnum}|[_\.\-])*	        { return(FILENAME); }

Or am I missing something?

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-11 12:31 ` Steve Lawrence
@ 2011-05-11 21:34   ` Daniel J Walsh
  2011-05-12 16:03     ` Steve Lawrence
  0 siblings, 1 reply; 8+ messages in thread
From: Daniel J Walsh @ 2011-05-11 21:34 UTC (permalink / raw)
  To: Steve Lawrence; +Cc: SELinux

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/11/2011 01:31 PM, Steve Lawrence wrote:
> On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
>> Otherwise you end up with a conflict.
> 
>> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>> index 427c189..1331c04 100644
>> --- a/checkpolicy/policy_scan.l
>> +++ b/checkpolicy/policy_scan.l
>> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>  {alnum}*                        { return(FILENAME); }
>> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>>  ([_\.]){alnum}+                 { return(FILENAME); }
>>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }
> 
> Can't these be merged? I know I merged something similar earlier, but is
> it really necessary to have 3 regexs for filename?
> 
> \.?({alnum}|[_\.\-])*	        { return(FILENAME); }
> 
> Or am I missing something?
I believe that if you have

- -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }

This conflicts with NUMBER. And causes other parts of the regular
expression to fail.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk3LAO4ACgkQrlYvE4MpobNN8gCgrFE7ID7IrlM/TbxHVjQ5N0e0
R98AoL7Zx20onPIOn+pUb4XtR9UNPiJR
=o5Aj
-----END PGP SIGNATURE-----

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-11 21:34   ` Daniel J Walsh
@ 2011-05-12 16:03     ` Steve Lawrence
  2011-05-12 16:10       ` Daniel J Walsh
  0 siblings, 1 reply; 8+ messages in thread
From: Steve Lawrence @ 2011-05-12 16:03 UTC (permalink / raw)
  To: Daniel J Walsh; +Cc: SELinux

On 05/11/2011 05:34 PM, Daniel J Walsh wrote:
> On 05/11/2011 01:31 PM, Steve Lawrence wrote:
>> On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
>>> Otherwise you end up with a conflict.
> 
>>> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>>> index 427c189..1331c04 100644
>>> --- a/checkpolicy/policy_scan.l
>>> +++ b/checkpolicy/policy_scan.l
>>> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>>  {alnum}*                        { return(FILENAME); }
>>> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>>>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>>>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>>>  ([_\.]){alnum}+                 { return(FILENAME); }
>>>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>>>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }
> 
>> Can't these be merged? I know I merged something similar earlier, but is
>> it really necessary to have 3 regexs for filename?
> 
>> \.?({alnum}|[_\.\-])*	        { return(FILENAME); }
> 
>> Or am I missing something?
> I believe that if you have
> 
> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
> 
> This conflicts with NUMBER. And causes other parts of the regular
> expression to fail.
> 

Yeah, I think you're right, but there are still some problems with the
regex. For example, you can't have a file name that starts with an
underscore followed by anything other than an alphanumeric (e.g.
_foo_bar and _foo.txt are syntax errors). This also won't match file
names containing an underscore that begin with a number (e.g. 9foo_bar).

So, I'm wondering if we really gain much from having a separate FILENAME
identifier? Without it, I guess you could have filenames that aren't
valid filenames (e.g. "foo/bar"), but I don't know if that's worth the
complexity. If the only limits are things like can't have forward
slashes, can't equal '.' or '..',  perhaps it would be easier to move
valid file name checking into libsepol?

Is there any other value to the FILENAME identifier?

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-12 16:03     ` Steve Lawrence
@ 2011-05-12 16:10       ` Daniel J Walsh
  2011-05-13 17:35         ` Steve Lawrence
  0 siblings, 1 reply; 8+ messages in thread
From: Daniel J Walsh @ 2011-05-12 16:10 UTC (permalink / raw)
  To: Steve Lawrence; +Cc: SELinux

[-- Attachment #1: Type: text/plain, Size: 3139 bytes --]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/12/2011 06:03 PM, Steve Lawrence wrote:
> On 05/11/2011 05:34 PM, Daniel J Walsh wrote:
>> On 05/11/2011 01:31 PM, Steve Lawrence wrote:
>>> On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
>>>> Otherwise you end up with a conflict.
>>
>>>> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>>>> index 427c189..1331c04 100644
>>>> --- a/checkpolicy/policy_scan.l
>>>> +++ b/checkpolicy/policy_scan.l
>>>> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>>>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>>>  {alnum}*                        { return(FILENAME); }
>>>> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>>>>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>>>>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
>>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>>>>  ([_\.]){alnum}+                 { return(FILENAME); }
>>>>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>>>>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }
>>
>>> Can't these be merged? I know I merged something similar earlier, but is
>>> it really necessary to have 3 regexs for filename?
>>
>>> \.?({alnum}|[_\.\-])*	        { return(FILENAME); }
>>
>>> Or am I missing something?
>> I believe that if you have
>>
>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>
>> This conflicts with NUMBER. And causes other parts of the regular
>> expression to fail.
>>
> 
> Yeah, I think you're right, but there are still some problems with the
> regex. For example, you can't have a file name that starts with an
> underscore followed by anything other than an alphanumeric (e.g.
> _foo_bar and _foo.txt are syntax errors). This also won't match file
> names containing an underscore that begin with a number (e.g. 9foo_bar).
> 
> So, I'm wondering if we really gain much from having a separate FILENAME
> identifier? Without it, I guess you could have filenames that aren't
> valid filenames (e.g. "foo/bar"), but I don't know if that's worth the
> complexity. If the only limits are things like can't have forward
> slashes, can't equal '.' or '..',  perhaps it would be easier to move
> valid file name checking into libsepol?
> 
> Is there any other value to the FILENAME identifier?


Well without these changes files that begin with . like .ssh were not
accepted.   If you can generate a way so any blob of characters could be
treated as a file, then I am fine with it.

We need to say

000  Is a filename
.ssh
device-mapper

I have attached the name transition rules that we have added to F16
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk3MBmoACgkQrlYvE4MpobO6GQCdELkATI39ZrgFiFE/MJkvbCee
6+EAn1YbvBRpJdz0iQBNAoVjzSJ1X4Rk
=0sjD
-----END PGP SIGNATURE-----

[-- Attachment #2: names --]
[-- Type: text/plain, Size: 84821 bytes --]

+	userdom_user_home_dir_filetrans($1, config_home_t, dir, .xine)
+	userdom_user_home_dir_filetrans($1, cache_home_t, dir, .cache)
+	userdom_user_home_dir_filetrans($1, config_home_t, dir, .kde)
+	userdom_user_home_dir_filetrans($1, gconf_home_t, dir, .gconf)
+	userdom_user_home_dir_filetrans($1, gconf_home_t, dir, .gconfd)
+	userdom_user_home_dir_filetrans($1, gconf_home_t, dir, .local)
+	userdom_user_home_dir_filetrans($1, gnome_home_t, dir, .gnome2)
+	userdom_user_home_dir_filetrans($1, gstreamer_home_t, dir, .gstreamer-10)
+	userdom_user_home_dir_filetrans($1, gstreamer_home_t, dir, .gstreamer-12)
+	filetrans_pattern($1, gnome_home_t, gkeyringd_gnome_home_t, dir, keyrings)
+	filetrans_pattern($1, gconf_home_t, data_home_t, dir, share)
+	userdom_admin_home_dir_filetrans($1, config_home_t, dir, .xine)
+	userdom_admin_home_dir_filetrans($1, cache_home_t, dir, .cache)
+	userdom_admin_home_dir_filetrans($1, config_home_t, dir, .kde)
+	userdom_admin_home_dir_filetrans($1, gconf_home_t, dir, .gconf)
+	userdom_admin_home_dir_filetrans($1, gconf_home_t, dir, .gconfd)
+	userdom_admin_home_dir_filetrans($1, gconf_home_t, dir, .local)
+	userdom_admin_home_dir_filetrans($1, gnome_home_t, dir, .gnome2)
+	userdom_admin_home_dir_filetrans($1, gstreamer_home_t, dir, .gstreamer-10)
+	userdom_admin_home_dir_filetrans($1, gstreamer_home_t, dir, .gstreamer-12)
+	dev_filetrans($1, devpts_t, dir, pts)
+	userdom_user_home_dir_filetrans($1, httpd_user_content_t, dir, public_html)
+	userdom_user_home_dir_filetrans($1, httpd_user_content_t, dir, www)
+	userdom_user_home_dir_filetrans($1, httpd_user_content_t, dir, web)
+	userdom_admin_home_dir_filetrans($1, ssh_home_t, dir, .ssh)
+	userdom_admin_home_dir_filetrans($1, ssh_home_t, dir, .shosts)
+	userdom_user_home_dir_filetrans($1, ssh_home_t, dir, .ssh)
+	userdom_user_home_dir_filetrans($1, ssh_home_t, dir, .shosts)
+	userdom_user_home_dir_filetrans($1, virt_home_t, dir, .libvirt)
+	userdom_user_home_dir_filetrans($1, virt_home_t, dir, .virtinst)
+#	userdom_user_home_dir_filetrans($1, user_fonts_t, dir, .fonts.d)
+#	userdom_user_home_dir_filetrans($1, user_fonts_t, dir, .fonts)
+#	userdom_user_home_dir_filetrans($1, user_fonts_cache_t, dir, .fontconfig)
+	userdom_user_home_dir_filetrans($1, user_fonts_config_t, dir, .fonts.d)
+	userdom_user_home_dir_filetrans($1, user_fonts_t, dir, .fonts)
+	userdom_user_home_dir_filetrans($1, user_fonts_cache_t, dir, .fontconfig)
+	filetrans_pattern($1, user_fonts_t, user_fonts_cache_t, dir, auto)
+	userdom_user_home_dir_filetrans($1, config_home_t, file, .Xdefaults)
+	userdom_admin_home_dir_filetrans($1, config_home_t, file, .Xdefaults)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, 3dfx)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, admmidi9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, adsp9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, aload9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amidi9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, amixer9)
+	filetrans_pattern($1, device_t, apm_bios_t, chr_file, apm_bios)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, atibm)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, audio9)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs0)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs1)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs2)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs3)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs4)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs5)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs6)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs7)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs8)
+	filetrans_pattern($1, device_t, autofs_device_t, chr_file, autofs9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, beep)
+	filetrans_pattern($1, device_t, lvm_control_t, chr_file, btrfs-control)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, controlD64)
+	filetrans_pattern($1, device_t, crash_device_t, chr_file, crash)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm0)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm1)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm2)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm3)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm4)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm5)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm6)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm7)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm8)
+	filetrans_pattern($1, device_t, dlm_control_device_t, chr_file, dlm9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmfm)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dmmidi9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, dsp9)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, efirtc)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, e2201)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83000)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83001)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83002)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83003)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83004)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83005)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83006)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83007)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83008)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, em83009)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event0)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event1)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event2)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event3)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event4)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event5)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event6)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event7)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event8)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, event9)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, evtchn)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb0)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb1)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb2)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb3)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb4)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb5)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb6)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb7)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb8)
+	filetrans_pattern($1, device_t, framebuf_device_t, chr_file, fb9)
+	filetrans_pattern($1, device_t, null_device_t, chr_file, full)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw0)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw1)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw2)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw3)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw4)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw5)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw6)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw7)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw8)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, fw9)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 000)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 001)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 002)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 003)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 004)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 005)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 006)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 007)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 008)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, 009)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, gfx)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, graphics)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc0)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc1)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc2)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc3)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc4)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc5)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc6)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc7)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc8)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, gtrsc9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, hfmodem)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev0)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev1)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev2)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev3)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev4)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev5)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev6)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev7)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev8)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hiddev9)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw0)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw1)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw2)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw3)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw4)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw5)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw6)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw7)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw8)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, hidraw9)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, hpet)
+	filetrans_pattern($1, device_t, random_device_t, chr_file, hw_random)
+	filetrans_pattern($1, device_t, random_device_t, chr_file, hwrng)
+	filetrans_pattern($1, device_t, dri_device_t, chr_file, i915)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, inportbm)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi0)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi1)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi2)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi3)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi4)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi5)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi6)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi7)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi8)
+	filetrans_pattern($1, device_t, ipmi_device_t, chr_file, ipmi9)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt0)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt1)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt2)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt3)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt4)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt5)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt6)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt7)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt8)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, irlpt9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, jbm)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js0)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js1)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js2)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js3)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js4)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js5)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js6)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js7)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js8)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, js9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse0)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse1)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse2)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse3)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse4)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse5)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse6)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse7)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse8)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mouse9)
+	filetrans_pattern($1, device_t, memory_device_t, chr_file, kmem)
+	filetrans_pattern($1, device_t, kmsg_device_t, chr_file, kmsg)
+	filetrans_pattern($1, device_t, qemu_device_t, chr_file, kqemu)
+	filetrans_pattern($1, device_t, ksm_device_t, chr_file, ksm)
+	filetrans_pattern($1, device_t, kvm_device_t, chr_file, kvm)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik0)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik1)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik2)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik3)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik4)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik5)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik6)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik7)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik8)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, lik9)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc0)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc1)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc2)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc3)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc4)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc5)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc6)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc7)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc8)
+	filetrans_pattern($1, device_t, lirc_device_t, chr_file, lirc9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, lircm)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, logibm)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp0)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp1)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp2)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp3)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp4)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp5)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp6)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp7)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp8)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, lp9)
+	filetrans_pattern($1, device_t, kmsg_device_t, chr_file, mcelog)
+	filetrans_pattern($1, device_t, memory_device_t, chr_file, mem)
+	filetrans_pattern($1, device_t, memory_device_t, chr_file, mergemem)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid0)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid1)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid2)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid3)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid4)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid5)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid6)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid7)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid8)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, mga_vid9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mice)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, microcode)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, midi9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mixer9)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mmetfgrab)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, modem)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4010)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4011)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4012)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4013)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4014)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4015)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4016)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4017)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4018)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, mpu4019)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr0)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr1)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr2)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr3)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr4)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr5)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr6)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr7)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr8)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, msr9)
+	filetrans_pattern($1, device_t, vhost_device_t, chr_file, vhost)
+	filetrans_pattern($1, device_t, netcontrol_device_t, chr_file, network_latency)
+	filetrans_pattern($1, device_t, netcontrol_device_t, chr_file, network_throughput)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz0)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz1)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz2)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz3)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz4)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz5)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz6)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz7)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz8)
+	filetrans_pattern($1, device_t, modem_device_t, chr_file, noz9)
+	filetrans_pattern($1, device_t, null_device_t, chr_file, null)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia0)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia1)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia2)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia3)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia4)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia5)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia6)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia7)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia8)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidia9)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, nvidiactl)
+	filetrans_pattern($1, device_t, nvram_device_t, chr_file, nvram)
+	filetrans_pattern($1, device_t, memory_device_t, chr_file, oldmem)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, opengl)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par0)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par1)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par2)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par3)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par4)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par5)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par6)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par7)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par8)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, par9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, pc110pad)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock0)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock1)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock2)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock3)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock4)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock5)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock6)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock7)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock8)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pcfclock9)
+	filetrans_pattern($1, device_t, power_device_t, chr_file, pmu)
+	filetrans_pattern($1, device_t, memory_device_t, chr_file, port)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps0)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps1)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps2)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps3)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps4)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps5)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps6)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps7)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps8)
+	filetrans_pattern($1, device_t, clock_device_t, chr_file, pps9)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, rmidi9)
+	filetrans_pattern($1, device_t, dri_device_t, chr_file, radeon)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio0)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio1)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio2)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio3)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio4)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio5)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio6)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio7)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio8)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, radio9)
+	filetrans_pattern($1, device_t, random_device_t, chr_file, random)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13940)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13941)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13942)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13943)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13944)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13945)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13946)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13947)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13948)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, raw13949)
+	filetrans_pattern($1, device_t, wireless_device_t, chr_file, rfkill)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, sequencer)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, sequencer2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte7)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte8)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, smpte9)
+	filetrans_pattern($1, device_t, power_device_t, chr_file, smu)
+	filetrans_pattern($1, device_t, apm_bios_t, chr_file, snapshot)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, sndstat)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, sonypi)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm0)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm1)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm2)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm3)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm4)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm5)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm6)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm7)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm8)
+	filetrans_pattern($1, device_t, tpm_device_t, chr_file, tpm9)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, uinput)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio0)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio1)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio2)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio3)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio4)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio5)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio6)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio7)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio8)
+	filetrans_pattern($1, device_t, userio_device_t, chr_file, uio9)
+	filetrans_pattern($1, device_t, urandom_device_t, chr_file, urandom)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb0)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb1)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb2)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb3)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb4)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb5)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb6)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb7)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, usb8)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp0)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp1)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp2)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp3)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp4)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp5)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp6)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp7)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp8)
+	filetrans_pattern($1, device_t, printer_device_t, chr_file, usblp9)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon0)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon1)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon2)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon3)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon4)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon5)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon6)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon7)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon8)
+	filetrans_pattern($1, device_t, usbmon_device_t, chr_file, usbmon9)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, usbscanner)
+	filetrans_pattern($1, device_t, vhost_device_t, chr_file, vhost-net)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi0)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi1)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi2)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi3)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi4)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi5)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi6)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi7)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi8)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vbi9)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox0)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox1)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox2)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox3)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox4)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox5)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox6)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox7)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox8)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vbox9)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, vga_arbiter)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmmon)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet0)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet1)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet2)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet3)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet4)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet5)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet6)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet7)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet8)
+	filetrans_pattern($1, device_t, vmware_device_t, chr_file, vmnet9)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video0)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video1)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video2)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video3)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video4)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video5)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video6)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video7)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video8)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, video9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, vrtpanel)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vttuner)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx0)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx1)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx2)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx3)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx4)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx5)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx6)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx7)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx8)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, vtx9)
+	filetrans_pattern($1, device_t, watchdog_device_t, chr_file, watchdog)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio0)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio1)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio2)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio3)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio4)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio5)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio6)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio7)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio8)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, winradio9)
+	filetrans_pattern($1, device_t, crypt_device_t, chr_file, z90crypt)
+	filetrans_pattern($1, device_t, zero_device_t, chr_file, zero)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card0)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card1)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card2)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card3)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card4)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card5)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card6)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card7)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card8)
+	filetrans_pattern($1, device_t, xserver_misc_device_t, chr_file, card9)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx0)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx1)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx2)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx3)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx4)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx5)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx6)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx7)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx8)
+	filetrans_pattern($1, device_t, smartcard_device_t, chr_file, cmx9)
+	filetrans_pattern($1, device_t, netcontrol_device_t, chr_file, cpu_dma_latency)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu0)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu1)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu2)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu3)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu4)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu5)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu6)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu7)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu8)
+	filetrans_pattern($1, device_t, cpu_device_t, chr_file, cpu9)
+	filetrans_pattern($1, device_t, mtrr_device_t, chr_file, mtrr)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor0)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor1)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor2)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor3)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor4)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor5)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor6)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor7)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor8)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, sensor9)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m0)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m1)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m2)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m3)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m4)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m5)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m6)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m7)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m8)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, m9)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard0)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard1)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard2)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard3)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard4)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard5)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard6)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard7)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard8)
+	filetrans_pattern($1, device_t, event_device_t, chr_file, keyboard9)
+	filetrans_pattern($1, device_t, lvm_control_t, chr_file, control)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, ucb1x00)
+	filetrans_pattern($1, device_t, mouse_device_t, chr_file, mk712)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx0)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx1)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx2)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx3)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx4)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx5)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx6)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx7)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx8)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, dc2xx9)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8000)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8001)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8002)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8003)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8004)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8005)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8006)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8007)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8008)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, mdc8009)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner0)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner1)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner2)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner3)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner4)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner5)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner6)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner7)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner8)
+	filetrans_pattern($1, device_t, scanner_device_t, chr_file, scanner9)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap0)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap1)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap2)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap3)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap4)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap5)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap6)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap7)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap8)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, blktap9)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, gntdev)
+	filetrans_pattern($1, device_t, xen_device_t, chr_file, gntalloc)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, patmgr0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, patmgr1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd0)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd1)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd2)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd3)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd4)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd5)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd6)
+	filetrans_pattern($1, device_t, sound_device_t, chr_file, srnd7)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, tlk0)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, tlk1)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, tlk2)
+	filetrans_pattern($1, device_t, v4l_device_t, chr_file, tlk3)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, uba)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, ubb)
+	filetrans_pattern($1, device_t, usb_device_t, chr_file, ubc)
+	dev_filetrans($1, tape_device_t, chr_file, ht00)
+	dev_filetrans($1, tape_device_t, chr_file, ht01)
+	dev_filetrans($1, tape_device_t, chr_file, ht02)
+	dev_filetrans($1, tape_device_t, chr_file, ht03)
+	dev_filetrans($1, tape_device_t, chr_file, ht04)
+	dev_filetrans($1, tape_device_t, chr_file, ht05)
+	dev_filetrans($1, tape_device_t, chr_file, ht06)
+	dev_filetrans($1, tape_device_t, chr_file, ht07)
+	dev_filetrans($1, tape_device_t, chr_file, ht08)
+	dev_filetrans($1, tape_device_t, chr_file, ht09)
+	dev_filetrans($1, tape_device_t, chr_file, st00)
+	dev_filetrans($1, tape_device_t, chr_file, st01)
+	dev_filetrans($1, tape_device_t, chr_file, st02)
+	dev_filetrans($1, tape_device_t, chr_file, st03)
+	dev_filetrans($1, tape_device_t, chr_file, st04)
+	dev_filetrans($1, tape_device_t, chr_file, st05)
+	dev_filetrans($1, tape_device_t, chr_file, st06)
+	dev_filetrans($1, tape_device_t, chr_file, st07)
+	dev_filetrans($1, tape_device_t, chr_file, st08)
+	dev_filetrans($1, tape_device_t, chr_file, st09)
+	dev_filetrans($1, tape_device_t, chr_file, qft0)
+	dev_filetrans($1, tape_device_t, chr_file, qft1)
+	dev_filetrans($1, tape_device_t, chr_file, qft2)
+	dev_filetrans($1, tape_device_t, chr_file, qft3)
+	dev_filetrans($1, tape_device_t, chr_file, osst00)
+	dev_filetrans($1, tape_device_t, chr_file, osst01)
+	dev_filetrans($1, tape_device_t, chr_file, osst02)
+	dev_filetrans($1, tape_device_t, chr_file, osst03)
+	dev_filetrans($1, tape_device_t, chr_file, osst04)
+	dev_filetrans($1, tape_device_t, chr_file, osst05)
+	dev_filetrans($1, tape_device_t, chr_file, osst06)
+	dev_filetrans($1, tape_device_t, chr_file, osst07)
+	dev_filetrans($1, tape_device_t, chr_file, osst08)
+	dev_filetrans($1, tape_device_t, chr_file, osst09)
+	dev_filetrans($1, tape_device_t, chr_file, pt0)
+	dev_filetrans($1, tape_device_t, chr_file, pt1)
+	dev_filetrans($1, tape_device_t, chr_file, pt2)
+	dev_filetrans($1, tape_device_t, chr_file, pt3)
+	dev_filetrans($1, tape_device_t, chr_file, pt4)
+	dev_filetrans($1, tape_device_t, chr_file, pt5)
+	dev_filetrans($1, tape_device_t, chr_file, pt6)
+	dev_filetrans($1, tape_device_t, chr_file, pt7)
+	dev_filetrans($1, tape_device_t, chr_file, pt8)
+	dev_filetrans($1, tape_device_t, chr_file, pt9)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic0)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic1)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic2)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic3)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic4)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic5)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic6)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic7)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic8)
+	dev_filetrans($1, tape_device_t, chr_file, tpqic9)
+	dev_filetrans($1, removable_device_t, blk_file, aztcd)
+	dev_filetrans($1, removable_device_t, blk_file, bpcd)
+	dev_filetrans($1, removable_device_t, blk_file, cdu0)
+	dev_filetrans($1, removable_device_t, blk_file, cdu1)
+	dev_filetrans($1, removable_device_t, blk_file, cdu2)
+	dev_filetrans($1, removable_device_t, blk_file, cdu3)
+	dev_filetrans($1, removable_device_t, blk_file, cdu4)
+	dev_filetrans($1, removable_device_t, blk_file, cdu5)
+	dev_filetrans($1, removable_device_t, blk_file, cdu6)
+	dev_filetrans($1, removable_device_t, blk_file, cdu7)
+	dev_filetrans($1, removable_device_t, blk_file, cdu8)
+	dev_filetrans($1, removable_device_t, blk_file, cdu9)
+	dev_filetrans($1, removable_device_t, blk_file, cm200)
+	dev_filetrans($1, removable_device_t, blk_file, cm201)
+	dev_filetrans($1, removable_device_t, blk_file, cm202)
+	dev_filetrans($1, removable_device_t, blk_file, cm203)
+	dev_filetrans($1, removable_device_t, blk_file, cm204)
+	dev_filetrans($1, removable_device_t, blk_file, cm205)
+	dev_filetrans($1, removable_device_t, blk_file, cm206)
+	dev_filetrans($1, removable_device_t, blk_file, cm207)
+	dev_filetrans($1, removable_device_t, blk_file, cm208)
+	dev_filetrans($1, removable_device_t, blk_file, cm209)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sda9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdb9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, sdc9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, dm-9)
+	dev_filetrans($1, removable_device_t, blk_file, gscd)
+	dev_filetrans($1, removable_device_t, blk_file, hitcd)
+	dev_filetrans($1, tape_device_t, blk_file, ht0)
+	dev_filetrans($1, tape_device_t, blk_file, ht1)
+	dev_filetrans($1, removable_device_t, blk_file, hwcdrom)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, initrd)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, jsfd)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, jsflash)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, loop9)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, lvm)
+	dev_filetrans($1, removable_device_t, blk_file, mcd)
+	dev_filetrans($1, removable_device_t, blk_file, mcdx)
+	dev_filetrans($1, removable_device_t, chr_file, megadev0)
+	dev_filetrans($1, removable_device_t, chr_file, megadev1)
+	dev_filetrans($1, removable_device_t, chr_file, megadev2)
+	dev_filetrans($1, removable_device_t, chr_file, megadev3)
+	dev_filetrans($1, removable_device_t, chr_file, megadev4)
+	dev_filetrans($1, removable_device_t, chr_file, megadev5)
+	dev_filetrans($1, removable_device_t, chr_file, megadev6)
+	dev_filetrans($1, removable_device_t, chr_file, megadev7)
+	dev_filetrans($1, removable_device_t, chr_file, megadev8)
+	dev_filetrans($1, removable_device_t, chr_file, megadev9)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk0)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk1)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk2)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk3)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk4)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk5)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk6)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk7)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk8)
+	dev_filetrans($1, removable_device_t, blk_file, mmcblk9)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk0)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk1)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk2)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk3)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk4)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk5)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk6)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk7)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk8)
+	dev_filetrans($1, removable_device_t, blk_file, mspblk9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, mtd9)
+	dev_filetrans($1, removable_device_t, blk_file, optcd)
+	dev_filetrans($1, removable_device_t, blk_file, pf0)
+	dev_filetrans($1, removable_device_t, blk_file, pf1)
+	dev_filetrans($1, removable_device_t, blk_file, pf2)
+	dev_filetrans($1, removable_device_t, blk_file, pf3)
+	dev_filetrans($1, removable_device_t, blk_file, pg0)
+	dev_filetrans($1, removable_device_t, blk_file, pg1)
+	dev_filetrans($1, removable_device_t, blk_file, pg2)
+	dev_filetrans($1, removable_device_t, blk_file, pg3)
+	dev_filetrans($1, removable_device_t, blk_file, pcd0)
+	dev_filetrans($1, removable_device_t, blk_file, pcd1)
+	dev_filetrans($1, removable_device_t, blk_file, pcd2)
+	dev_filetrans($1, removable_device_t, blk_file, pcd3)
+	dev_filetrans($1, removable_device_t, chr_file, pg0)
+	dev_filetrans($1, removable_device_t, chr_file, pg1)
+	dev_filetrans($1, removable_device_t, chr_file, pg2)
+	dev_filetrans($1, removable_device_t, chr_file, pg3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ps3d9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram10)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram11)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram12)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram13)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram14)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, ram15)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd0)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd1)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd2)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd3)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd4)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd5)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd6)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd7)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd8)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, rd9)
+	dev_filetrans($1, fixed_disk_device_t, blk_file, root)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd0)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd1)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd2)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd3)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd4)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd5)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd6)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd7)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd8)
+	dev_filetrans($1, removable_device_t, blk_file, sbpcd9)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg0)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg1)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg2)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg3)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg4)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg5)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg6)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg7)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg8)
+	dev_filetrans($1, scsi_generic_device_t, chr_file, sg9)
+	dev_filetrans($1, removable_device_t, blk_file, sjcd)
+	dev_filetrans($1, removable_device_t, blk_file, sonycd)
+	dev_filetrans($1, tape_device_t, chr_file, tape0)
+	dev_filetrans($1, tape_device_t, chr_file, tape1)
+	dev_filetrans($1, tape_device_t, chr_file, tape2)
+	dev_filetrans($1, tape_device_t, chr_file, tape3)
+	dev_filetrans($1, tape_device_t, chr_file, tape4)
+	dev_filetrans($1, tape_device_t, chr_file, tape5)
+	dev_filetrans($1, tape_device_t, chr_file, tape6)
+	dev_filetrans($1, tape_device_t, chr_file, tape7)
+	dev_filetrans($1, tape_device_t, chr_file, tape8)
+	dev_filetrans($1, tape_device_t, chr_file, tape9)
+	dev_filetrans($1, fuse_device_t, chr_file, fuse)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, device-mapper)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw0)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw1)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw2)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw3)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw4)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw5)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw6)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw7)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw8)
+	dev_filetrans($1, fixed_disk_device_t, chr_file, raw9)
+	dev_filetrans($1, removable_device_t, chr_file, rio500)
+	dev_filetrans($1, devtty_t, chr_file, tty)
+	dev_filetrans($1, tty_device_t, chr_file, tty0)
+	dev_filetrans($1, tty_device_t, chr_file, tty1)
+	dev_filetrans($1, tty_device_t, chr_file, tty2)
+	dev_filetrans($1, tty_device_t, chr_file, tty3)
+	dev_filetrans($1, tty_device_t, chr_file, tty4)
+	dev_filetrans($1, tty_device_t, chr_file, tty5)
+	dev_filetrans($1, tty_device_t, chr_file, tty6)
+	dev_filetrans($1, tty_device_t, chr_file, tty7)
+	dev_filetrans($1, tty_device_t, chr_file, tty8)
+	dev_filetrans($1, tty_device_t, chr_file, tty9)
+	dev_filetrans($1, tty_device_t, chr_file, tty10)
+	dev_filetrans($1, tty_device_t, chr_file, tty11)
+	dev_filetrans($1, tty_device_t, chr_file, tty12)
+	dev_filetrans($1, tty_device_t, chr_file, tty13)
+	dev_filetrans($1, tty_device_t, chr_file, tty14)
+	dev_filetrans($1, tty_device_t, chr_file, tty15)
+	dev_filetrans($1, tty_device_t, chr_file, tty16)
+	dev_filetrans($1, tty_device_t, chr_file, tty17)
+	dev_filetrans($1, tty_device_t, chr_file, tty18)
+	dev_filetrans($1, tty_device_t, chr_file, tty19)
+	dev_filetrans($1, tty_device_t, chr_file, tty20)
+	dev_filetrans($1, tty_device_t, chr_file, tty21)
+	dev_filetrans($1, tty_device_t, chr_file, tty22)
+	dev_filetrans($1, tty_device_t, chr_file, tty23)
+	dev_filetrans($1, tty_device_t, chr_file, tty24)
+	dev_filetrans($1, tty_device_t, chr_file, tty25)
+	dev_filetrans($1, tty_device_t, chr_file, tty26)
+	dev_filetrans($1, tty_device_t, chr_file, tty27)
+	dev_filetrans($1, tty_device_t, chr_file, tty28)
+	dev_filetrans($1, tty_device_t, chr_file, tty29)
+	dev_filetrans($1, tty_device_t, chr_file, tty30)
+	dev_filetrans($1, tty_device_t, chr_file, tty31)
+	dev_filetrans($1, tty_device_t, chr_file, tty32)
+	dev_filetrans($1, tty_device_t, chr_file, tty33)
+	dev_filetrans($1, tty_device_t, chr_file, tty34)
+	dev_filetrans($1, tty_device_t, chr_file, tty35)
+	dev_filetrans($1, tty_device_t, chr_file, tty36)
+	dev_filetrans($1, tty_device_t, chr_file, tty37)
+	dev_filetrans($1, tty_device_t, chr_file, tty38)
+	dev_filetrans($1, tty_device_t, chr_file, tty39)
+	dev_filetrans($1, tty_device_t, chr_file, tty40)
+	dev_filetrans($1, tty_device_t, chr_file, tty41)
+	dev_filetrans($1, tty_device_t, chr_file, tty42)
+	dev_filetrans($1, tty_device_t, chr_file, tty43)
+	dev_filetrans($1, tty_device_t, chr_file, tty44)
+	dev_filetrans($1, tty_device_t, chr_file, tty45)
+	dev_filetrans($1, tty_device_t, chr_file, tty46)
+	dev_filetrans($1, tty_device_t, chr_file, tty47)
+	dev_filetrans($1, tty_device_t, chr_file, tty48)
+	dev_filetrans($1, tty_device_t, chr_file, tty49)
+	dev_filetrans($1, tty_device_t, chr_file, tty50)
+	dev_filetrans($1, tty_device_t, chr_file, tty51)
+	dev_filetrans($1, tty_device_t, chr_file, tty52)
+	dev_filetrans($1, tty_device_t, chr_file, tty53)
+	dev_filetrans($1, tty_device_t, chr_file, tty54)
+	dev_filetrans($1, tty_device_t, chr_file, tty55)
+	dev_filetrans($1, tty_device_t, chr_file, tty56)
+	dev_filetrans($1, tty_device_t, chr_file, tty57)
+	dev_filetrans($1, tty_device_t, chr_file, tty58)
+	dev_filetrans($1, tty_device_t, chr_file, tty59)
+	dev_filetrans($1, tty_device_t, chr_file, tty60)
+	dev_filetrans($1, tty_device_t, chr_file, tty61)
+	dev_filetrans($1, tty_device_t, chr_file, tty62)
+	dev_filetrans($1, tty_device_t, chr_file, tty63)
+	dev_filetrans($1, tty_device_t, chr_file, tty64)
+	dev_filetrans($1, tty_device_t, chr_file, tty65)
+	dev_filetrans($1, tty_device_t, chr_file, tty66)
+	dev_filetrans($1, tty_device_t, chr_file, tty67)
+	dev_filetrans($1, tty_device_t, chr_file, tty68)
+	dev_filetrans($1, tty_device_t, chr_file, tty69)
+	dev_filetrans($1, tty_device_t, chr_file, tty70)
+	dev_filetrans($1, tty_device_t, chr_file, tty71)
+	dev_filetrans($1, tty_device_t, chr_file, tty72)
+	dev_filetrans($1, tty_device_t, chr_file, tty73)
+	dev_filetrans($1, tty_device_t, chr_file, tty74)
+	dev_filetrans($1, tty_device_t, chr_file, tty75)
+	dev_filetrans($1, tty_device_t, chr_file, tty76)
+	dev_filetrans($1, tty_device_t, chr_file, tty77)
+	dev_filetrans($1, tty_device_t, chr_file, tty78)
+	dev_filetrans($1, tty_device_t, chr_file, tty79)
+	dev_filetrans($1, tty_device_t, chr_file, tty80)
+	dev_filetrans($1, tty_device_t, chr_file, tty81)
+	dev_filetrans($1, tty_device_t, chr_file, tty82)
+	dev_filetrans($1, tty_device_t, chr_file, tty83)
+	dev_filetrans($1, tty_device_t, chr_file, tty84)
+	dev_filetrans($1, tty_device_t, chr_file, tty85)
+	dev_filetrans($1, tty_device_t, chr_file, tty86)
+	dev_filetrans($1, tty_device_t, chr_file, tty87)
+	dev_filetrans($1, tty_device_t, chr_file, tty88)
+	dev_filetrans($1, tty_device_t, chr_file, tty89)
+	dev_filetrans($1, tty_device_t, chr_file, tty90)
+	dev_filetrans($1, tty_device_t, chr_file, tty91)
+	dev_filetrans($1, tty_device_t, chr_file, tty92)
+	dev_filetrans($1, tty_device_t, chr_file, tty93)
+	dev_filetrans($1, tty_device_t, chr_file, tty94)
+	dev_filetrans($1, tty_device_t, chr_file, tty95)
+	dev_filetrans($1, tty_device_t, chr_file, tty96)
+	dev_filetrans($1, tty_device_t, chr_file, tty97)
+	dev_filetrans($1, tty_device_t, chr_file, tty98)
+	dev_filetrans($1, tty_device_t, chr_file, tty99)
+	dev_filetrans($1, tty_device_t, chr_file, pty)
+	dev_filetrans($1, tty_device_t, chr_file, pty0)
+	dev_filetrans($1, tty_device_t, chr_file, pty1)
+	dev_filetrans($1, tty_device_t, chr_file, pty2)
+	dev_filetrans($1, tty_device_t, chr_file, pty3)
+	dev_filetrans($1, tty_device_t, chr_file, pty4)
+	dev_filetrans($1, tty_device_t, chr_file, pty5)
+	dev_filetrans($1, tty_device_t, chr_file, pty6)
+	dev_filetrans($1, tty_device_t, chr_file, pty7)
+	dev_filetrans($1, tty_device_t, chr_file, pty8)
+	dev_filetrans($1, tty_device_t, chr_file, pty9)
+	dev_filetrans($1, tty_device_t, chr_file, pty10)
+	dev_filetrans($1, tty_device_t, chr_file, pty11)
+	dev_filetrans($1, tty_device_t, chr_file, pty12)
+	dev_filetrans($1, tty_device_t, chr_file, pty13)
+	dev_filetrans($1, tty_device_t, chr_file, pty14)
+	dev_filetrans($1, tty_device_t, chr_file, pty15)
+	dev_filetrans($1, tty_device_t, chr_file, pty16)
+	dev_filetrans($1, tty_device_t, chr_file, pty17)
+	dev_filetrans($1, tty_device_t, chr_file, pty18)
+	dev_filetrans($1, tty_device_t, chr_file, pty19)
+	dev_filetrans($1, tty_device_t, chr_file, pty20)
+	dev_filetrans($1, tty_device_t, chr_file, pty21)
+	dev_filetrans($1, tty_device_t, chr_file, pty22)
+	dev_filetrans($1, tty_device_t, chr_file, pty23)
+	dev_filetrans($1, tty_device_t, chr_file, pty24)
+	dev_filetrans($1, tty_device_t, chr_file, pty25)
+	dev_filetrans($1, tty_device_t, chr_file, pty26)
+	dev_filetrans($1, tty_device_t, chr_file, pty27)
+	dev_filetrans($1, tty_device_t, chr_file, pty28)
+	dev_filetrans($1, tty_device_t, chr_file, pty29)
+	dev_filetrans($1, tty_device_t, chr_file, pty30)
+	dev_filetrans($1, tty_device_t, chr_file, pty31)
+	dev_filetrans($1, tty_device_t, chr_file, pty32)
+	dev_filetrans($1, tty_device_t, chr_file, pty33)
+	dev_filetrans($1, tty_device_t, chr_file, pty34)
+	dev_filetrans($1, tty_device_t, chr_file, pty35)
+	dev_filetrans($1, tty_device_t, chr_file, pty36)
+	dev_filetrans($1, tty_device_t, chr_file, pty37)
+	dev_filetrans($1, tty_device_t, chr_file, pty38)
+	dev_filetrans($1, tty_device_t, chr_file, pty39)
+	dev_filetrans($1, tty_device_t, chr_file, pty40)
+	dev_filetrans($1, tty_device_t, chr_file, pty41)
+	dev_filetrans($1, tty_device_t, chr_file, pty42)
+	dev_filetrans($1, tty_device_t, chr_file, pty43)
+	dev_filetrans($1, tty_device_t, chr_file, pty44)
+	dev_filetrans($1, tty_device_t, chr_file, pty45)
+	dev_filetrans($1, tty_device_t, chr_file, pty46)
+	dev_filetrans($1, tty_device_t, chr_file, pty47)
+	dev_filetrans($1, tty_device_t, chr_file, pty48)
+	dev_filetrans($1, tty_device_t, chr_file, pty49)
+	dev_filetrans($1, tty_device_t, chr_file, pty50)
+	dev_filetrans($1, tty_device_t, chr_file, pty51)
+	dev_filetrans($1, tty_device_t, chr_file, pty52)
+	dev_filetrans($1, tty_device_t, chr_file, pty53)
+	dev_filetrans($1, tty_device_t, chr_file, pty54)
+	dev_filetrans($1, tty_device_t, chr_file, pty55)
+	dev_filetrans($1, tty_device_t, chr_file, pty56)
+	dev_filetrans($1, tty_device_t, chr_file, pty57)
+	dev_filetrans($1, tty_device_t, chr_file, pty58)
+	dev_filetrans($1, tty_device_t, chr_file, pty59)
+	dev_filetrans($1, tty_device_t, chr_file, pty60)
+	dev_filetrans($1, tty_device_t, chr_file, pty61)
+	dev_filetrans($1, tty_device_t, chr_file, pty62)
+	dev_filetrans($1, tty_device_t, chr_file, pty63)
+	dev_filetrans($1, tty_device_t, chr_file, pty64)
+	dev_filetrans($1, tty_device_t, chr_file, pty65)
+	dev_filetrans($1, tty_device_t, chr_file, pty66)
+	dev_filetrans($1, tty_device_t, chr_file, pty67)
+	dev_filetrans($1, tty_device_t, chr_file, pty68)
+	dev_filetrans($1, tty_device_t, chr_file, pty69)
+	dev_filetrans($1, tty_device_t, chr_file, pty70)
+	dev_filetrans($1, tty_device_t, chr_file, pty71)
+	dev_filetrans($1, tty_device_t, chr_file, pty72)
+	dev_filetrans($1, tty_device_t, chr_file, pty73)
+	dev_filetrans($1, tty_device_t, chr_file, pty74)
+	dev_filetrans($1, tty_device_t, chr_file, pty75)
+	dev_filetrans($1, tty_device_t, chr_file, pty76)
+	dev_filetrans($1, tty_device_t, chr_file, pty77)
+	dev_filetrans($1, tty_device_t, chr_file, pty78)
+	dev_filetrans($1, tty_device_t, chr_file, pty79)
+	dev_filetrans($1, tty_device_t, chr_file, pty80)
+	dev_filetrans($1, tty_device_t, chr_file, pty81)
+	dev_filetrans($1, tty_device_t, chr_file, pty82)
+	dev_filetrans($1, tty_device_t, chr_file, pty83)
+	dev_filetrans($1, tty_device_t, chr_file, pty84)
+	dev_filetrans($1, tty_device_t, chr_file, pty85)
+	dev_filetrans($1, tty_device_t, chr_file, pty86)
+	dev_filetrans($1, tty_device_t, chr_file, pty87)
+	dev_filetrans($1, tty_device_t, chr_file, pty88)
+	dev_filetrans($1, tty_device_t, chr_file, pty89)
+	dev_filetrans($1, tty_device_t, chr_file, pty90)
+	dev_filetrans($1, tty_device_t, chr_file, pty91)
+	dev_filetrans($1, tty_device_t, chr_file, pty92)
+	dev_filetrans($1, tty_device_t, chr_file, pty93)
+	dev_filetrans($1, tty_device_t, chr_file, pty94)
+	dev_filetrans($1, tty_device_t, chr_file, pty95)
+	dev_filetrans($1, tty_device_t, chr_file, pty96)
+	dev_filetrans($1, tty_device_t, chr_file, pty97)
+	dev_filetrans($1, tty_device_t, chr_file, pty98)
+	dev_filetrans($1, tty_device_t, chr_file, pty99)
+	dev_filetrans($1, tty_device_t, chr_file, adb0)
+	dev_filetrans($1, tty_device_t, chr_file, adb1)
+	dev_filetrans($1, tty_device_t, chr_file, adb2)
+	dev_filetrans($1, tty_device_t, chr_file, adb3)
+	dev_filetrans($1, tty_device_t, chr_file, adb4)
+	dev_filetrans($1, tty_device_t, chr_file, adb5)
+	dev_filetrans($1, tty_device_t, chr_file, adb6)
+	dev_filetrans($1, tty_device_t, chr_file, adb7)
+	dev_filetrans($1, tty_device_t, chr_file, adb8)
+	dev_filetrans($1, tty_device_t, chr_file, adb9)
+	dev_filetrans($1, tty_device_t, chr_file, capi0)
+	dev_filetrans($1, tty_device_t, chr_file, capi1)
+	dev_filetrans($1, tty_device_t, chr_file, capi2)
+	dev_filetrans($1, tty_device_t, chr_file, capi3)
+	dev_filetrans($1, tty_device_t, chr_file, capi4)
+	dev_filetrans($1, tty_device_t, chr_file, capi5)
+	dev_filetrans($1, tty_device_t, chr_file, capi6)
+	dev_filetrans($1, tty_device_t, chr_file, capi7)
+	dev_filetrans($1, tty_device_t, chr_file, capi8)
+	dev_filetrans($1, tty_device_t, chr_file, capi9)
+	dev_filetrans($1, console_device_t, chr_file, console)
+	dev_filetrans($1, tty_device_t, chr_file, cu0)
+	dev_filetrans($1, tty_device_t, chr_file, cu1)
+	dev_filetrans($1, tty_device_t, chr_file, cu2)
+	dev_filetrans($1, tty_device_t, chr_file, cu3)
+	dev_filetrans($1, tty_device_t, chr_file, cu4)
+	dev_filetrans($1, tty_device_t, chr_file, cu5)
+	dev_filetrans($1, tty_device_t, chr_file, cu6)
+	dev_filetrans($1, tty_device_t, chr_file, cu7)
+	dev_filetrans($1, tty_device_t, chr_file, cu8)
+	dev_filetrans($1, tty_device_t, chr_file, cu9)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri0)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri1)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri2)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri3)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri4)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri5)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri6)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri7)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri8)
+	dev_filetrans($1, tty_device_t, chr_file, dcbri9)
+	dev_filetrans($1, tty_device_t, chr_file, hvc0)
+	dev_filetrans($1, tty_device_t, chr_file, hvc1)
+	dev_filetrans($1, tty_device_t, chr_file, hvc2)
+	dev_filetrans($1, tty_device_t, chr_file, hvc3)
+	dev_filetrans($1, tty_device_t, chr_file, hvc4)
+	dev_filetrans($1, tty_device_t, chr_file, hvc5)
+	dev_filetrans($1, tty_device_t, chr_file, hvc6)
+	dev_filetrans($1, tty_device_t, chr_file, hvc7)
+	dev_filetrans($1, tty_device_t, chr_file, hvc8)
+	dev_filetrans($1, tty_device_t, chr_file, hvc9)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi0)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi1)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi2)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi3)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi4)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi5)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi6)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi7)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi8)
+	dev_filetrans($1, tty_device_t, chr_file, hvsi9)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm0)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm1)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm2)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm3)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm4)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm5)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm6)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm7)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm8)
+	dev_filetrans($1, tty_device_t, chr_file, ircomm9)
+	dev_filetrans($1, tty_device_t, chr_file, isdn0)
+	dev_filetrans($1, tty_device_t, chr_file, isdn1)
+	dev_filetrans($1, tty_device_t, chr_file, isdn2)
+	dev_filetrans($1, tty_device_t, chr_file, isdn3)
+	dev_filetrans($1, tty_device_t, chr_file, isdn4)
+	dev_filetrans($1, tty_device_t, chr_file, isdn5)
+	dev_filetrans($1, tty_device_t, chr_file, isdn6)
+	dev_filetrans($1, tty_device_t, chr_file, isdn7)
+	dev_filetrans($1, tty_device_t, chr_file, isdn8)
+	dev_filetrans($1, tty_device_t, chr_file, isdn9)
+	dev_filetrans($1, ptmx_t, chr_file, ptmx)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm0)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm1)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm2)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm3)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm4)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm5)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm6)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm7)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm8)
+	dev_filetrans($1, tty_device_t, chr_file, rfcomm9)
+	dev_filetrans($1, tty_device_t, chr_file, slamr0)
+	dev_filetrans($1, tty_device_t, chr_file, slamr1)
+	dev_filetrans($1, tty_device_t, chr_file, slamr2)
+	dev_filetrans($1, tty_device_t, chr_file, slamr3)
+	dev_filetrans($1, tty_device_t, chr_file, slamr4)
+	dev_filetrans($1, tty_device_t, chr_file, slamr5)
+	dev_filetrans($1, tty_device_t, chr_file, slamr6)
+	dev_filetrans($1, tty_device_t, chr_file, slamr7)
+	dev_filetrans($1, tty_device_t, chr_file, slamr8)
+	dev_filetrans($1, tty_device_t, chr_file, slamr9)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS0)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS1)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS2)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS3)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS4)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS5)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS6)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS7)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS8)
+	dev_filetrans($1, tty_device_t, chr_file, ttyS9)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG0)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG1)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG2)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG3)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG4)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG5)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG6)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG7)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG8)
+	dev_filetrans($1, tty_device_t, chr_file, ttySG9)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p0)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p1)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p2)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p3)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p4)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p5)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p6)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p7)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p8)
+	dev_filetrans($1, virtio_device_t, chr_file, vport0p9)
+	dev_filetrans($1, tty_device_t, chr_file, xvc0)
+	dev_filetrans($1, tty_device_t, chr_file, xvc1)
+	dev_filetrans($1, tty_device_t, chr_file, xvc2)
+	dev_filetrans($1, tty_device_t, chr_file, xvc3)
+	dev_filetrans($1, tty_device_t, chr_file, xvc4)
+	dev_filetrans($1, tty_device_t, chr_file, xvc5)
+	dev_filetrans($1, tty_device_t, chr_file, xvc6)
+	dev_filetrans($1, tty_device_t, chr_file, xvc7)
+	dev_filetrans($1, tty_device_t, chr_file, xvc8)
+	dev_filetrans($1, tty_device_t, chr_file, xvc9)
+	files_etc_filetrans($1, krb5_keytab_t, file, $2)
+	files_tmp_filetrans($1, krb5_host_rcache_t, file, $2)
+	userdom_admin_home_dir_filetrans($1, kerberos_home_t, file, .k5login)
+	userdom_user_home_dir_filetrans($1, kerberos_home_t, file, .k5login)
+	files_etc_filetrans($1, krb5_conf_t, file, krb5.conf)
+	filetrans_pattern($1, krb5kdc_conf_t, krb5_keytab_t, file, kadm5.keytab)
+	filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, principal)
+	filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, principal0)
+	filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, principal1)
+	#filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, principal1)
+	files_etc_filetrans($1, etc_aliases_t, file, $2)
+	userdom_admin_home_dir_filetrans($1, mail_home_t, file, dead.letter)
+	userdom_admin_home_dir_filetrans($1, mail_home_t, file, .forward)
+	userdom_user_home_dir_filetrans($1, mail_home_t, file, dead.letter)
+	userdom_user_home_dir_filetrans($1, mail_home_t, file, .forward)
+	userdom_user_home_dir_filetrans($2, iceauth_home_t, file, .DCOP)
+	userdom_user_home_dir_filetrans($2, iceauth_home_t, file, .ICEauthority)
+	userdom_user_home_dir_filetrans($2, xauth_home_t, file, .Xauthority)
+	userdom_user_home_dir_filetrans($2, xauth_home_t, file, .xauth)
+	userdom_user_home_dir_filetrans($2, xdm_home_t, file, .xsession-errors)
+	userdom_user_home_dir_filetrans($2, xdm_home_t, file, .dmrc)
+	userdom_user_home_dir_filetrans($1, xdm_home_t, file, .dmrc)
+	userdom_user_home_dir_filetrans($1, xdm_home_t, file, .xsession-errors)
+	userdom_user_home_dir_filetrans($1, iceauth_home_t, file, .DCOP)
+	userdom_user_home_dir_filetrans($1, iceauth_home_t, file, .ICEauthority)
+	userdom_user_home_dir_filetrans($1, xauth_home_t, file, .Xauthority)
+	userdom_user_home_dir_filetrans($1, xauth_home_t, file, .xauth)
+	userdom_user_home_dir_filetrans($1, xauth_home_t, file, .Xauth)
+	userdom_user_home_dir_filetrans($1, user_fonts_config_t, file, .fonts.conf)
+	files_etc_filetrans($1, net_conf_t, file, $2)

[-- Attachment #3: names.sig --]
[-- Type: application/pgp-signature, Size: 72 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-12 16:10       ` Daniel J Walsh
@ 2011-05-13 17:35         ` Steve Lawrence
  2011-05-14  1:21           ` Daniel J Walsh
  0 siblings, 1 reply; 8+ messages in thread
From: Steve Lawrence @ 2011-05-13 17:35 UTC (permalink / raw)
  To: Daniel J Walsh; +Cc: SELinux

On 05/12/2011 12:10 PM, Daniel J Walsh wrote:
> On 05/12/2011 06:03 PM, Steve Lawrence wrote:
>> On 05/11/2011 05:34 PM, Daniel J Walsh wrote:
>>> On 05/11/2011 01:31 PM, Steve Lawrence wrote:
>>>> On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
>>>>> Otherwise you end up with a conflict.
>>>
>>>>> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>>>>> index 427c189..1331c04 100644
>>>>> --- a/checkpolicy/policy_scan.l
>>>>> +++ b/checkpolicy/policy_scan.l
>>>>> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>>>>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>>>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>>>>  {alnum}*                        { return(FILENAME); }
>>>>> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>>>>>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>>>>>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
>>>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>>> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>>>>>  ([_\.]){alnum}+                 { return(FILENAME); }
>>>>>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>>>>>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }
>>>
>>>> Can't these be merged? I know I merged something similar earlier, but is
>>>> it really necessary to have 3 regexs for filename?
>>>
>>>> \.?({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>
>>>> Or am I missing something?
>>> I believe that if you have
>>>
>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>
>>> This conflicts with NUMBER. And causes other parts of the regular
>>> expression to fail.
>>>
> 
>> Yeah, I think you're right, but there are still some problems with the
>> regex. For example, you can't have a file name that starts with an
>> underscore followed by anything other than an alphanumeric (e.g.
>> _foo_bar and _foo.txt are syntax errors). This also won't match file
>> names containing an underscore that begin with a number (e.g. 9foo_bar).
> 
>> So, I'm wondering if we really gain much from having a separate FILENAME
>> identifier? Without it, I guess you could have filenames that aren't
>> valid filenames (e.g. "foo/bar"), but I don't know if that's worth the
>> complexity. If the only limits are things like can't have forward
>> slashes, can't equal '.' or '..',  perhaps it would be easier to move
>> valid file name checking into libsepol?
> 
>> Is there any other value to the FILENAME identifier?
> 
> 
> Well without these changes files that begin with . like .ssh were not
> accepted.   If you can generate a way so any blob of characters could be
> treated as a file, then I am fine with it.
> 
> We need to say
> 
> 000  Is a filename
> .ssh
> device-mapper
> 
> I have attached the name transition rules that we have added to F16

How about changing the filename_trans syntax a bit, and wrap the file
name in quotes, e.g.

    type_transition foo_t bar_t:file baz_t "filename";

This way there can be a single simple filename regex (nothing else is
wrapped in quotes), with a little magic to strip off the quotes.

With d4c230386653db reverted, the below patch implements that.

I'm hesitant to make the quote change for genfscon and fs_use, though.
What was the reasoning for changing those identifiers to filenames? Maybe
something else would make more sense.

---

diff --git a/checkpolicy/policy_parse.y b/checkpolicy/policy_parse.y
index 34e485d..d135e08 100644
--- a/checkpolicy/policy_parse.y
+++ b/checkpolicy/policy_parse.y
@@ -81,6 +81,7 @@ typedef int (* require_func_t)();
 %type <require_func> require_decl_def
 
 %token PATH
+%token FILENAME
 %token CLONE
 %token COMMON
 %token CLASS
@@ -341,7 +342,7 @@ cond_rule_def           : cond_transition_def
 			| require_block
 			{ $$ = NULL; }
                         ;
-cond_transition_def	: TYPE_TRANSITION names names ':' names identifier identifier ';'
+cond_transition_def	: TYPE_TRANSITION names names ':' names identifier filename ';'
                         { $$ = define_cond_filename_trans() ;
                           if ($$ == COND_ERR) return -1;}
 			| TYPE_TRANSITION names names ':' names identifier ';'
@@ -380,7 +381,7 @@ cond_dontaudit_def	: DONTAUDIT names names ':' names names ';'
                           if ($$ == COND_ERR) return -1; }
 		        ;
 			;
-transition_def		: TYPE_TRANSITION  names names ':' names identifier identifier ';'
+transition_def		: TYPE_TRANSITION  names names ':' names identifier filename ';'
 			{if (define_filename_trans()) return -1; }
 			| TYPE_TRANSITION names names ':' names identifier ';'
                         {if (define_compute_type(AVRULE_TRANSITION)) return -1;}
@@ -739,6 +740,9 @@ identifier		: IDENTIFIER
 path     		: PATH
 			{ if (insert_id(yytext,0)) return -1; }
 			;
+filename		: FILENAME
+			{ yytext[strlen(yytext) - 1] = '\0'; if (insert_id(yytext + 1,0)) return -1; }
+			;
 number			: NUMBER 
 			{ $$ = strtoul(yytext,NULL,0); }
 			;
diff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
index 48128a8..d727f1c 100644
--- a/checkpolicy/policy_scan.l
+++ b/checkpolicy/policy_scan.l
@@ -216,6 +216,7 @@ POLICYCAP			{ return(POLICYCAP); }
 permissive |
 PERMISSIVE			{ return(PERMISSIVE); }
 "/"({alnum}|[_\.\-/])*	        { return(PATH); }
+\"({alnum}|[_\.\-])+\"			{ return(FILENAME); }
 {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
 {digit}+|0x{hexval}+            { return(NUMBER); }
 {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-13 17:35         ` Steve Lawrence
@ 2011-05-14  1:21           ` Daniel J Walsh
  2011-05-17 14:25             ` Steve Lawrence
  0 siblings, 1 reply; 8+ messages in thread
From: Daniel J Walsh @ 2011-05-14  1:21 UTC (permalink / raw)
  To: Steve Lawrence; +Cc: SELinux

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/13/2011 07:35 PM, Steve Lawrence wrote:
> On 05/12/2011 12:10 PM, Daniel J Walsh wrote:
>> On 05/12/2011 06:03 PM, Steve Lawrence wrote:
>>> On 05/11/2011 05:34 PM, Daniel J Walsh wrote:
>>>> On 05/11/2011 01:31 PM, Steve Lawrence wrote:
>>>>> On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
>>>>>> Otherwise you end up with a conflict.
>>>>
>>>>>> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>>>>>> index 427c189..1331c04 100644
>>>>>> --- a/checkpolicy/policy_scan.l
>>>>>> +++ b/checkpolicy/policy_scan.l
>>>>>> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>>>>>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>>>>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>>>>>  {alnum}*                        { return(FILENAME); }
>>>>>> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>>>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>>>>>>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>>>>>>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
>>>>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>>>> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>>>>>>  ([_\.]){alnum}+                 { return(FILENAME); }
>>>>>>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>>>>>>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }
>>>>
>>>>> Can't these be merged? I know I merged something similar earlier, but is
>>>>> it really necessary to have 3 regexs for filename?
>>>>
>>>>> \.?({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>>
>>>>> Or am I missing something?
>>>> I believe that if you have
>>>>
>>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>>
>>>> This conflicts with NUMBER. And causes other parts of the regular
>>>> expression to fail.
>>>>
>>
>>> Yeah, I think you're right, but there are still some problems with the
>>> regex. For example, you can't have a file name that starts with an
>>> underscore followed by anything other than an alphanumeric (e.g.
>>> _foo_bar and _foo.txt are syntax errors). This also won't match file
>>> names containing an underscore that begin with a number (e.g. 9foo_bar).
>>
>>> So, I'm wondering if we really gain much from having a separate FILENAME
>>> identifier? Without it, I guess you could have filenames that aren't
>>> valid filenames (e.g. "foo/bar"), but I don't know if that's worth the
>>> complexity. If the only limits are things like can't have forward
>>> slashes, can't equal '.' or '..',  perhaps it would be easier to move
>>> valid file name checking into libsepol?
>>
>>> Is there any other value to the FILENAME identifier?
>>
>>
>> Well without these changes files that begin with . like .ssh were not
>> accepted.   If you can generate a way so any blob of characters could be
>> treated as a file, then I am fine with it.
>>
>> We need to say
>>
>> 000  Is a filename
>> .ssh
>> device-mapper
>>
>> I have attached the name transition rules that we have added to F16
> 
> How about changing the filename_trans syntax a bit, and wrap the file
> name in quotes, e.g.
> 
>     type_transition foo_t bar_t:file baz_t "filename";
> 
> This way there can be a single simple filename regex (nothing else is
> wrapped in quotes), with a little magic to strip off the quotes.
> 
> With d4c230386653db reverted, the below patch implements that.
> 
> I'm hesitant to make the quote change for genfscon and fs_use, though.
> What was the reasoning for changing those identifiers to filenames? Maybe
> something else would make more sense.
> 
> ---
> 
> diff --git a/checkpolicy/policy_parse.y b/checkpolicy/policy_parse.y
> index 34e485d..d135e08 100644
> --- a/checkpolicy/policy_parse.y
> +++ b/checkpolicy/policy_parse.y
> @@ -81,6 +81,7 @@ typedef int (* require_func_t)();
>  %type <require_func> require_decl_def
>  
>  %token PATH
> +%token FILENAME
>  %token CLONE
>  %token COMMON
>  %token CLASS
> @@ -341,7 +342,7 @@ cond_rule_def           : cond_transition_def
>  			| require_block
>  			{ $$ = NULL; }
>                          ;
> -cond_transition_def	: TYPE_TRANSITION names names ':' names identifier identifier ';'
> +cond_transition_def	: TYPE_TRANSITION names names ':' names identifier filename ';'
>                          { $$ = define_cond_filename_trans() ;
>                            if ($$ == COND_ERR) return -1;}
>  			| TYPE_TRANSITION names names ':' names identifier ';'
> @@ -380,7 +381,7 @@ cond_dontaudit_def	: DONTAUDIT names names ':' names names ';'
>                            if ($$ == COND_ERR) return -1; }
>  		        ;
>  			;
> -transition_def		: TYPE_TRANSITION  names names ':' names identifier identifier ';'
> +transition_def		: TYPE_TRANSITION  names names ':' names identifier filename ';'
>  			{if (define_filename_trans()) return -1; }
>  			| TYPE_TRANSITION names names ':' names identifier ';'
>                          {if (define_compute_type(AVRULE_TRANSITION)) return -1;}
> @@ -739,6 +740,9 @@ identifier		: IDENTIFIER
>  path     		: PATH
>  			{ if (insert_id(yytext,0)) return -1; }
>  			;
> +filename		: FILENAME
> +			{ yytext[strlen(yytext) - 1] = '\0'; if (insert_id(yytext + 1,0)) return -1; }
> +			;
>  number			: NUMBER 
>  			{ $$ = strtoul(yytext,NULL,0); }
>  			;
> diff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
> index 48128a8..d727f1c 100644
> --- a/checkpolicy/policy_scan.l
> +++ b/checkpolicy/policy_scan.l
> @@ -216,6 +216,7 @@ POLICYCAP			{ return(POLICYCAP); }
>  permissive |
>  PERMISSIVE			{ return(PERMISSIVE); }
>  "/"({alnum}|[_\.\-/])*	        { return(PATH); }
> +\"({alnum}|[_\.\-])+\"			{ return(FILENAME); }
>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>  {digit}+|0x{hexval}+            { return(NUMBER); }
>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
> 
> --
> This message was distributed to subscribers of the selinux mailing list.
> If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
> the words "unsubscribe selinux" without quotes as the message.
> 
> 
This is fine with me, we just have to coordinate an update in
selinux-policy for F16.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk3N2S4ACgkQrlYvE4MpobORYwCgivJ/Tu1w9FGbloYp/UWV8rms
NOsAnAriR07ZVUeXhmkrE9ixZuuu/niY
=7i/o
-----END PGP SIGNATURE-----

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: I believe you will need this patch also to build reference policy.
  2011-05-14  1:21           ` Daniel J Walsh
@ 2011-05-17 14:25             ` Steve Lawrence
  0 siblings, 0 replies; 8+ messages in thread
From: Steve Lawrence @ 2011-05-17 14:25 UTC (permalink / raw)
  To: Daniel J Walsh; +Cc: SELinux

On 05/13/2011 09:21 PM, Daniel J Walsh wrote:
> On 05/13/2011 07:35 PM, Steve Lawrence wrote:
>> On 05/12/2011 12:10 PM, Daniel J Walsh wrote:
>>> On 05/12/2011 06:03 PM, Steve Lawrence wrote:
>>>> On 05/11/2011 05:34 PM, Daniel J Walsh wrote:
>>>>> On 05/11/2011 01:31 PM, Steve Lawrence wrote:
>>>>>> On 05/03/2011 09:32 AM, Daniel J Walsh wrote:
>>>>>>> Otherwise you end up with a conflict.
>>>>>
>>>>>>> checkpolicy-filename.patchdiff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>>>>>>> index 427c189..1331c04 100644
>>>>>>> --- a/checkpolicy/policy_scan.l
>>>>>>> +++ b/checkpolicy/policy_scan.l
>>>>>>> @@ -219,10 +219,11 @@ PERMISSIVE			{ return(PERMISSIVE); }
>>>>>>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>>>>>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>>>>>>  {alnum}*                        { return(FILENAME); }
>>>>>>> +\.({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>>>>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
>>>>>>>  {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])*  { return(IPV6_ADDR); }
>>>>>>>  {digit}+(\.({alnum}|[_.])*)?    { return(VERSION_IDENTIFIER); }
>>>>>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>>>>> +{letter}+([-_\.]|{alnum})+      { return(FILENAME); }
>>>>>>>  ([_\.]){alnum}+                 { return(FILENAME); }
>>>>>>>  #line[ ]1[ ]\"[^\n]*\"		{ set_source_file(yytext+9); }
>>>>>>>  #line[ ]{digit}+	        { source_lineno = atoi(yytext+6)-1; }
>>>>>
>>>>>> Can't these be merged? I know I merged something similar earlier, but is
>>>>>> it really necessary to have 3 regexs for filename?
>>>>>
>>>>>> \.?({alnum}|[_\.\-])*	        { return(FILENAME); }
>>>>>
>>>>>> Or am I missing something?
>>>>> I believe that if you have
>>>>>
>>>>> -{alnum}+([_\.]|{alnum})+      { return(FILENAME); }
>>>>>
>>>>> This conflicts with NUMBER. And causes other parts of the regular
>>>>> expression to fail.
>>>>>
>>>
>>>> Yeah, I think you're right, but there are still some problems with the
>>>> regex. For example, you can't have a file name that starts with an
>>>> underscore followed by anything other than an alphanumeric (e.g.
>>>> _foo_bar and _foo.txt are syntax errors). This also won't match file
>>>> names containing an underscore that begin with a number (e.g. 9foo_bar).
>>>
>>>> So, I'm wondering if we really gain much from having a separate FILENAME
>>>> identifier? Without it, I guess you could have filenames that aren't
>>>> valid filenames (e.g. "foo/bar"), but I don't know if that's worth the
>>>> complexity. If the only limits are things like can't have forward
>>>> slashes, can't equal '.' or '..',  perhaps it would be easier to move
>>>> valid file name checking into libsepol?
>>>
>>>> Is there any other value to the FILENAME identifier?
>>>
>>>
>>> Well without these changes files that begin with . like .ssh were not
>>> accepted.   If you can generate a way so any blob of characters could be
>>> treated as a file, then I am fine with it.
>>>
>>> We need to say
>>>
>>> 000  Is a filename
>>> .ssh
>>> device-mapper
>>>
>>> I have attached the name transition rules that we have added to F16
> 
>> How about changing the filename_trans syntax a bit, and wrap the file
>> name in quotes, e.g.
> 
>>     type_transition foo_t bar_t:file baz_t "filename";
> 
>> This way there can be a single simple filename regex (nothing else is
>> wrapped in quotes), with a little magic to strip off the quotes.
> 
>> With d4c230386653db reverted, the below patch implements that.
> 
>> I'm hesitant to make the quote change for genfscon and fs_use, though.
>> What was the reasoning for changing those identifiers to filenames? Maybe
>> something else would make more sense.
> 
>> ---
> 
>> diff --git a/checkpolicy/policy_parse.y b/checkpolicy/policy_parse.y
>> index 34e485d..d135e08 100644
>> --- a/checkpolicy/policy_parse.y
>> +++ b/checkpolicy/policy_parse.y
>> @@ -81,6 +81,7 @@ typedef int (* require_func_t)();
>>  %type <require_func> require_decl_def
> 
>>  %token PATH
>> +%token FILENAME
>>  %token CLONE
>>  %token COMMON
>>  %token CLASS
>> @@ -341,7 +342,7 @@ cond_rule_def           : cond_transition_def
>>  			| require_block
>>  			{ $$ = NULL; }
>>                          ;
>> -cond_transition_def	: TYPE_TRANSITION names names ':' names identifier identifier ';'
>> +cond_transition_def	: TYPE_TRANSITION names names ':' names identifier filename ';'
>>                          { $$ = define_cond_filename_trans() ;
>>                            if ($$ == COND_ERR) return -1;}
>>  			| TYPE_TRANSITION names names ':' names identifier ';'
>> @@ -380,7 +381,7 @@ cond_dontaudit_def	: DONTAUDIT names names ':' names names ';'
>>                            if ($$ == COND_ERR) return -1; }
>>  		        ;
>>  			;
>> -transition_def		: TYPE_TRANSITION  names names ':' names identifier identifier ';'
>> +transition_def		: TYPE_TRANSITION  names names ':' names identifier filename ';'
>>  			{if (define_filename_trans()) return -1; }
>>  			| TYPE_TRANSITION names names ':' names identifier ';'
>>                          {if (define_compute_type(AVRULE_TRANSITION)) return -1;}
>> @@ -739,6 +740,9 @@ identifier		: IDENTIFIER
>>  path     		: PATH
>>  			{ if (insert_id(yytext,0)) return -1; }
>>  			;
>> +filename		: FILENAME
>> +			{ yytext[strlen(yytext) - 1] = '\0'; if (insert_id(yytext + 1,0)) return -1; }
>> +			;
>>  number			: NUMBER 
>>  			{ $$ = strtoul(yytext,NULL,0); }
>>  			;
>> diff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l
>> index 48128a8..d727f1c 100644
>> --- a/checkpolicy/policy_scan.l
>> +++ b/checkpolicy/policy_scan.l
>> @@ -216,6 +216,7 @@ POLICYCAP			{ return(POLICYCAP); }
>>  permissive |
>>  PERMISSIVE			{ return(PERMISSIVE); }
>>  "/"({alnum}|[_\.\-/])*	        { return(PATH); }
>> +\"({alnum}|[_\.\-])+\"			{ return(FILENAME); }
>>  {letter}({alnum}|[_\-])*([\.]?({alnum}|[_\-]))*	{ return(IDENTIFIER); }
>>  {digit}+|0x{hexval}+            { return(NUMBER); }
>>  {digit}{1,3}(\.{digit}{1,3}){3}    { return(IPV4_ADDR); }
> 
>> --
>> This message was distributed to subscribers of the selinux mailing list.
>> If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
>> the words "unsubscribe selinux" without quotes as the message.
> 
> 
> This is fine with me, we just have to coordinate an update in
> selinux-policy for F16.

Ok. This has been applied in checkpolicy-2.0.26.

Thanks.

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-05-17 14:24 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-03 13:32 I believe you will need this patch also to build reference policy Daniel J Walsh
2011-05-11 12:31 ` Steve Lawrence
2011-05-11 21:34   ` Daniel J Walsh
2011-05-12 16:03     ` Steve Lawrence
2011-05-12 16:10       ` Daniel J Walsh
2011-05-13 17:35         ` Steve Lawrence
2011-05-14  1:21           ` Daniel J Walsh
2011-05-17 14:25             ` Steve Lawrence

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.