diff --git a/init.hardware.rc b/init.hardware.rc index 93514333..8347797e 100644 --- a/init.hardware.rc +++ b/init.hardware.rc @@ -689,6 +689,18 @@ service loc_launcher /vendor/bin/loc_launcher service pd_mapper /vendor/bin/pd-mapper class core +service atfwd /vendor/bin/ATFWD-daemon + class late_start + user system + group system radio + disabled + +on property:persist.radio.atfwd.start=true + start atfwd + +on property:persist.radio.atfwd.start=false + stop atfwd + # bugreport is triggered by holding down volume down, volume up and power service bugreport /system/bin/dumpstate -d -p -B -z \ -o /data/user_de/0/com.android.shell/files/bugreports/bugreport diff --git a/manifest.xml b/manifest.xml index 4ef58946..6ea940ed 100644 --- a/manifest.xml +++ b/manifest.xml @@ -412,4 +412,13 @@ cnd + + vendor.qti.atcmdfwd + hwbinder + 1.0 + + IAtCmdFwd + AtCmdFwdService + + diff --git a/sepolicy/vendor/atfwd.te b/sepolicy/vendor/atfwd.te new file mode 100644 index 00000000..ad96a120 --- /dev/null +++ b/sepolicy/vendor/atfwd.te @@ -0,0 +1,16 @@ +type atfwd, domain; +type atfwd_exec, exec_type, vendor_file_type, file_type; + +init_daemon_domain(atfwd) + +hwbinder_use(atfwd) +get_prop(atfwd, hwservicemanager_prop) +allow atfwd vnd_atcmdfwd_hwservice:hwservice_manager find; +binder_call(atfwd, qtelephony); + +allow atfwd self:socket create_socket_perms; +allowxperm atfwd self:socket ioctl msm_sock_ipc_ioctls; + +r_dir_file(atfwd, sysfs_type) + +set_prop(atfwd, radio_prop) diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 0690949e..4475ed46 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -152,6 +152,7 @@ /vendor/bin/ipacm-diag u:object_r:hal_tetheroffload_default_exec:s0 /vendor/bin/qmuxd u:object_r:qmuxd_exec:s0 /vendor/bin/cnd u:object_r:cnd_exec:s0 +/vendor/bin/ATFWD-daemon u:object_r:atfwd_exec:s0 # Remove after b/38447389 /vendor/bin/esed u:object_r:esed_exec:s0 # Rename to android.hardware.[XXX] after b/38447431 diff --git a/sepolicy/vendor/hwservice.te b/sepolicy/vendor/hwservice.te index 4a1ae5f8..4e13ddb1 100644 --- a/sepolicy/vendor/hwservice.te +++ b/sepolicy/vendor/hwservice.te @@ -1,4 +1,5 @@ type vnd_ims_radio_hwservice, hwservice_manager_type; type vnd_qcrilhook_hwservice, hwservice_manager_type; +type vnd_atcmdfwd_hwservice, hwservice_manager_type; type hal_imsrtp_hwservice, hwservice_manager_type; type hal_ipacm_hwservice, hwservice_manager_type; diff --git a/sepolicy/vendor/hwservice_contexts b/sepolicy/vendor/hwservice_contexts index 3b6bf789..89f75101 100644 --- a/sepolicy/vendor/hwservice_contexts +++ b/sepolicy/vendor/hwservice_contexts @@ -1,6 +1,7 @@ com.qualcomm.qti.ims.radio::IImsRadio u:object_r:vnd_ims_radio_hwservice:s0 com.qualcomm.qti.qcril.qcrilhook::IQtiOemHook u:object_r:vnd_qcrilhook_hwservice:s0 com.qualcomm.qti.uceservice::IUceService u:object_r:hal_imsrcsd_hwservice:s0 +vendor.qti.atcmdfwd::IAtCmdFwd u:object_r:vnd_atcmdfwd_hwservice:s0 vendor.qti.qcril.am::IQcRilAudio u:object_r:vnd_qcrilhook_hwservice:s0 com.qualcomm.qti.imsrtpservice::IRTPService u:object_r:hal_imsrtp_hwservice:s0 android.hardware.tetheroffload.config::IOffloadConfig u:object_r:hal_tetheroffload_hwservice:s0 diff --git a/sepolicy/vendor/property.te b/sepolicy/vendor/property.te index 371170bf..b8e8e53f 100644 --- a/sepolicy/vendor/property.te +++ b/sepolicy/vendor/property.te @@ -13,3 +13,4 @@ type thermal_prop, property_type; type modem_diag_prop, property_type; type tel_mon_prop, property_type; type sys_time_prop, property_type; +type atfwd_start_prop, property_type; diff --git a/sepolicy/vendor/property_contexts b/sepolicy/vendor/property_contexts index fcc78c42..9635f48a 100644 --- a/sepolicy/vendor/property_contexts +++ b/sepolicy/vendor/property_contexts @@ -22,3 +22,4 @@ persist.sys.modem.diag. u:object_r:modem_diag_prop:s0 sys.modem.diag. u:object_r:modem_diag_prop:s0 persist.radio.enable_tel_mon u:object_r:tel_mon_prop:s0 sys.time.set u:object_r:sys_time_prop:s0 +persist.radio.atfwd.start u:object_r:atfwd_start_prop:s0 diff --git a/sepolicy/vendor/qtelephony.te b/sepolicy/vendor/qtelephony.te new file mode 100644 index 00000000..0788cdfe --- /dev/null +++ b/sepolicy/vendor/qtelephony.te @@ -0,0 +1,15 @@ +# Qualcomm telephony apps, such as AtFwd and FastDormancy +type qtelephony, domain; + +app_domain(qtelephony) + +hwbinder_use(qtelephony) +add_hwservice(qtelephony, vnd_atcmdfwd_hwservice) + +allow qtelephony { app_api_service }:service_manager find; + +# Read and write /data/data subdirectory. +allow qtelephony system_app_data_file:dir create_dir_perms; +allow qtelephony system_app_data_file:{ file lnk_file } create_file_perms; + +set_prop(qtelephony, atfwd_start_prop) diff --git a/sepolicy/vendor/seapp_contexts b/sepolicy/vendor/seapp_contexts index 7e694ca7..67bff643 100644 --- a/sepolicy/vendor/seapp_contexts +++ b/sepolicy/vendor/seapp_contexts @@ -2,6 +2,9 @@ user=system seinfo=platform name=com.google.SSRestartDetector domain=ssr_detecto user=_app seinfo=platform name=com.android.nexuslogger domain=logger_app type=app_data_file levelFrom=all user=_app seinfo=platform name=com.android.ramdump domain=ramdump_app type=app_data_file levelFrom=all +#TODO Remove user "system" when b/63588267 is resolved +user=system seinfo=platform name=com.qualcomm.telephony domain=qtelephony type=system_app_data_file + #Add new domain for DataServices #TODO Remove user "system" when b/38043081 is resolved user=system seinfo=platform name=.dataservices domain=dataservice_app type=system_app_data_file