policy_module(terminal)

########################################
#
# Declarations
#
attribute ttynode;
attribute ptynode;
attribute server_ptynode;
attribute serial_device;

#
# bsdpty_device_t is the type of /dev/[tp]ty[abcdepqrstuvwxyz][0-9a-f]
type bsdpty_device_t;
dev_node(bsdpty_device_t)

#
# console_device_t is the type of /dev/console.
#
type console_device_t;
dev_node(console_device_t)

#
# devpts_t is the type of the devpts file system and
# the type of the root directory of the file system.
#
type devpts_t;
dev_associate(devpts_t)
files_mountpoint(devpts_t)
fs_associate_tmpfs(devpts_t)
fs_xattr_type(devpts_t)
fs_use_trans devpts gen_context(system_u:object_r:devpts_t,s0);

#
# devtty_t is the type of /dev/tty.
#
type devtty_t;
dev_node(devtty_t)
mls_trusted_object(devtty_t)

optional_policy(`
	container_mountpoint(devtty_t)
')

#
# ptmx_t is the type for /dev/ptmx.
#
type ptmx_t;
dev_node(ptmx_t)
mls_trusted_object(ptmx_t)
allow ptmx_t devpts_t:filesystem associate;

#
# tty_device_t is the type of /dev/*tty*
#
type tty_device_t, serial_device;
dev_node(tty_device_t)

#
# usbtty_device_t is the type of /dev/usr/tty*
#
type usbtty_device_t, serial_device;
dev_node(usbtty_device_t)

type virtio_device_t, serial_device;
dev_node(virtio_device_t)
