Chris PeBenito 9401ae1
## <summary>Manager for dynamically switching between networks.</summary>
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Read and write networkmanager udp sockets.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_rw_udp_sockets',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 NetworkManager_t:udp_socket { read write };
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Read and write networkmanager packet sockets.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_rw_packet_sockets',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 NetworkManager_t:packet_socket { read write };
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
#######################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
## Relabel networkmanager tun socket.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
## <summary>
Chris PeBenito 9401ae1
## Domain allowed access.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_attach_tun_iface',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 NetworkManager_t:tun_socket relabelfrom;
Chris PeBenito 9401ae1
	allow $1 self:tun_socket relabelto;
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Read and write networkmanager netlink
Chris PeBenito 9401ae1
##	routing sockets.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_rw_routing_sockets',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 NetworkManager_t:netlink_route_socket { read write };
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Execute networkmanager with a domain transition.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed to transition.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_domtrans',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t, NetworkManager_exec_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	corecmd_search_bin($1)
Chris PeBenito 9401ae1
	domtrans_pattern($1, NetworkManager_exec_t, NetworkManager_t)
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Execute networkmanager scripts with
Dominick Grift 21af0ce
##	an automatic domain transition to initrc.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed to transition.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_initrc_domtrans',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_initrc_exec_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	init_labeled_script_domtrans($1, NetworkManager_initrc_exec_t)
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Chris PeBenito 9401ae1
##	Send and receive messages from
Dominick Grift 21af0ce
##	networkmanager over dbus.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_dbus_chat',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t;
Chris PeBenito 9401ae1
		class dbus send_msg;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 NetworkManager_t:dbus send_msg;
Chris PeBenito 9401ae1
	allow NetworkManager_t $1:dbus send_msg;
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Send generic signals to networkmanager.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_signal',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	allow $1 NetworkManager_t:process signal;
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Read networkmanager lib files.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_read_lib_files',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_var_lib_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	files_search_var_lib($1)
Chris PeBenito 9401ae1
	list_dirs_pattern($1, NetworkManager_var_lib_t, NetworkManager_var_lib_t)
Chris PeBenito 9401ae1
	read_files_pattern($1, NetworkManager_var_lib_t, NetworkManager_var_lib_t)
Chris PeBenito 9401ae1
')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
########################################
Chris PeBenito 9401ae1
## <summary>
Dominick Grift 21af0ce
##	Append networkmanager log files.
Dominick Grift 28b22b2
## </summary>
Dominick Grift 28b22b2
## <param name="domain">
Dominick Grift 28b22b2
##	<summary>
Dominick Grift 28b22b2
##	Domain allowed access.
Dominick Grift 28b22b2
##	</summary>
Dominick Grift 28b22b2
## </param>
Dominick Grift 28b22b2
#
Dominick Grift 28b22b2
interface(`networkmanager_append_log_files',`
Dominick Grift 28b22b2
	gen_require(`
Dominick Grift 28b22b2
		type NetworkManager_log_t;
Dominick Grift 28b22b2
	')
Dominick Grift 28b22b2
Dominick Grift 28b22b2
	logging_search_logs($1)
Dominick Grift 28b22b2
	allow $1 NetworkManager_log_t:dir list_dir_perms;
Dominick Grift 28b22b2
	append_files_pattern($1, NetworkManager_log_t, NetworkManager_log_t)
Dominick Grift 28b22b2
')
Dominick Grift 28b22b2
Dominick Grift 28b22b2
########################################
Dominick Grift 28b22b2
## <summary>
Dominick Grift 21af0ce
##	Read networkmanager pid files.
Chris PeBenito 9401ae1
## </summary>
Chris PeBenito 9401ae1
## <param name="domain">
Chris PeBenito 9401ae1
##	<summary>
Chris PeBenito 9401ae1
##	Domain allowed access.
Chris PeBenito 9401ae1
##	</summary>
Chris PeBenito 9401ae1
## </param>
Chris PeBenito 9401ae1
#
Chris PeBenito 9401ae1
interface(`networkmanager_read_pid_files',`
Chris PeBenito 9401ae1
	gen_require(`
Chris PeBenito 9401ae1
		type NetworkManager_var_run_t;
Chris PeBenito 9401ae1
	')
Chris PeBenito 9401ae1
Chris PeBenito 9401ae1
	files_search_pids($1)
Chris PeBenito 9401ae1
	allow $1 NetworkManager_var_run_t:file read_file_perms;
Chris PeBenito 9401ae1
')
Dominick Grift 21af0ce
Dominick Grift 21af0ce
########################################
Dominick Grift 21af0ce
## <summary>
Dominick Grift 21af0ce
##	All of the rules required to
Dominick Grift 21af0ce
##	administrate an networkmanager environment.
Dominick Grift 21af0ce
## </summary>
Dominick Grift 21af0ce
## <param name="domain">
Dominick Grift 21af0ce
##	<summary>
Dominick Grift 21af0ce
##	Domain allowed access.
Dominick Grift 21af0ce
##	</summary>
Dominick Grift 21af0ce
## </param>
Dominick Grift 21af0ce
## <param name="role">
Dominick Grift 21af0ce
##	<summary>
Dominick Grift 21af0ce
##	Role allowed access.
Dominick Grift 21af0ce
##	</summary>
Dominick Grift 21af0ce
## </param>
Dominick Grift 21af0ce
## <rolecap/>
Dominick Grift 21af0ce
#
Dominick Grift 21af0ce
interface(`networkmanager_admin',`
Dominick Grift 21af0ce
	gen_require(`
Dominick Grift 21af0ce
		type NetworkManager_t, NetworkManager_initrc_exec_t, NetworkManager_etc_t;
Dominick Grift 21af0ce
		type NetworkManager_etc_rw_t, NetworkManager_log_t, NetworkManager_tmp_t;
Dominick Grift 21af0ce
		type NetworkManager_var_lib_t, NetworkManager_var_run_t, wpa_cli_t;
Dominick Grift 21af0ce
	')
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	allow $1 { wpa_cli_t NetworkManager_t }:process { ptrace signal_perms };
Dominick Grift 21af0ce
	ps_process_pattern($1, { wpa_cli_t NetworkManager_t })
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	init_labeled_script_domtrans($1, NetworkManager_initrc_exec_t)
Dominick Grift 21af0ce
	domain_system_change_exemption($1)
Dominick Grift 21af0ce
	role_transition $2 NetworkManager_initrc_exec_t system_r;
Dominick Grift 21af0ce
	allow $2 system_r;
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	logging_search_etc($1)
Dominick Grift 21af0ce
	admin_pattern($1, { NetworkManager_etc_t NetworkManager_etc_rw_t })
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	logging_search_logs($1)
Dominick Grift 21af0ce
	admin_pattern($1, NetworkManager_log_t)
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	files_search_var_lib($1)
Dominick Grift 21af0ce
	admin_pattern($1, NetworkManager_var_lib_t)
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	files_search_pids($1)
Dominick Grift 21af0ce
	admin_pattern($1, NetworkManager_var_run_t)
Dominick Grift 21af0ce
Dominick Grift 21af0ce
	files_search_tmp($1)
Dominick Grift 21af0ce
	admin_pattern($1, NetworkManager_tmp_t)
Dominick Grift 21af0ce
')