hostapd: re-introduce process tracking
Before commit 60fb4c92b6 ("hostapd: add ubus reload") netifd was
tracking hostapd/wpa_supplicant and restarting wifi in case of a
process crash. Restore this behaviour by tracking the PIDs of
hostapd and wpa_supplicant.
Also make sure hostapd and/or wpa_supplicant have been started before
emmitting ubus calls to them using ubus wait_for.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
			
			
This commit is contained in:
		| @@ -940,7 +940,10 @@ drv_mac80211_setup() { | |||||||
| 			} | 			} | ||||||
| 		else | 		else | ||||||
| 			add_ap=1 | 			add_ap=1 | ||||||
|  | 			ubus wait_for hostapd.$phy | ||||||
| 			ubus call hostapd.${phy} config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}" | 			ubus call hostapd.${phy} config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}" | ||||||
|  | 			local hostapd_pid=$(ubus call service list '{"name": "hostapd"}' | jsonfilter -l 1 -e "@['hostapd'].instances['hostapd-${phy}'].pid") | ||||||
|  | 			wireless_add_process "$hostapd_pid" "/usr/sbin/hostapd" 1 | ||||||
| 		fi | 		fi | ||||||
| 		ret="$?" | 		ret="$?" | ||||||
| 		[ "$ret" != 0 ] && { | 		[ "$ret" != 0 ] && { | ||||||
|   | |||||||
| @@ -958,6 +958,7 @@ wpa_supplicant_run() { | |||||||
|  |  | ||||||
| 	_wpa_supplicant_common "$ifname" | 	_wpa_supplicant_common "$ifname" | ||||||
|  |  | ||||||
|  | 	ubus wait_for wpa_supplicant.$phy | ||||||
| 	ubus call wpa_supplicant.$phy config_add "{ \ | 	ubus call wpa_supplicant.$phy config_add "{ \ | ||||||
| 		\"driver\": \"${_w_driver:-wext}\", \"ctrl\": \"$_rpath\", \ | 		\"driver\": \"${_w_driver:-wext}\", \"ctrl\": \"$_rpath\", \ | ||||||
| 		\"iface\": \"$ifname\", \"config\": \"$_config\" \ | 		\"iface\": \"$ifname\", \"config\": \"$_config\" \ | ||||||
| @@ -969,6 +970,9 @@ wpa_supplicant_run() { | |||||||
|  |  | ||||||
| 	[ "$ret" != 0 ] && wireless_setup_vif_failed WPA_SUPPLICANT_FAILED | 	[ "$ret" != 0 ] && wireless_setup_vif_failed WPA_SUPPLICANT_FAILED | ||||||
|  |  | ||||||
|  | 	local supplicant_pid=$(ubus call service list '{"name": "hostapd"}' | jsonfilter -l 1 -e "@['hostapd'].instances['supplicant-${phy}'].pid") | ||||||
|  | 	wireless_add_process "$supplicant_pid" "/usr/sbin/wpa_supplicant" 1 | ||||||
|  |  | ||||||
| 	return $ret | 	return $ret | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Golle
					Daniel Golle