hostapd: manage instances via procd instead of pidfile
Allows graceful restart of crashing hostapd/wpa_supplicant instances Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Daniel Golle <daniel@makrotopia.org> [daniel@makrotopia.org: attempt to launch only present services]
This commit is contained in:
		 Felix Fietkau
					Felix Fietkau
				
			
				
					committed by
					
						 Daniel Golle
						Daniel Golle
					
				
			
			
				
	
			
			
			 Daniel Golle
						Daniel Golle
					
				
			
						parent
						
							4225b83a76
						
					
				
				
					commit
					c888e17e06
				
			| @@ -1,14 +1,46 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| [ ${ACTION} = "remove" -a -n "${DEVICENAME}" ] && { | ||||
| 	kill $(cat /var/run/hostapd-${DEVICENAME}.pid) | ||||
| 	rm -rf /var/run/hostapd-${DEVICENAME}.pid /var/run/hostapd-${DEVICENAME}/ | ||||
| 	kill $(cat /var/run/wpa_supplicant-${DEVICENAME}.pid) | ||||
| 	rm -rf /var/run/wpa_supplicant-${DEVICENAME}.pid /var/run/wpa_supplicant-${DEVICENAME}/ | ||||
| initscript="$0" | ||||
|  | ||||
| . /lib/functions.sh | ||||
| . /lib/functions/procd.sh | ||||
|  | ||||
| cd /sys/class/ieee80211 | ||||
|  | ||||
| procd_lock() { | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| [ ${ACTION} = "add" -a -n "${DEVICENAME}" ] && { | ||||
| 	/usr/sbin/hostapd -s -n ${DEVICENAME} -P /var/run/hostapd-${DEVICENAME}.pid -g /var/run/hostapd-${DEVICENAME}/global -B & | ||||
| 	mkdir -p /var/run/wpa_supplicant-${DEVICENAME} | ||||
| 	/usr/sbin/wpa_supplicant -s -n ${DEVICENAME} -P /var/run/wpa_supplicant-${DEVICENAME}.pid -g /var/run/wpa_supplicant-${DEVICENAME}/global -B & | ||||
| service_triggers() { | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| service_data() { | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| procd_open_service hostapd | ||||
|  | ||||
| for phy in phy*; do | ||||
| 	[ -d "$phy" ] || continue | ||||
|  | ||||
| 	mkdir -p /var/run/wpa_supplicant-$phy /var/run/hostapd-$phy | ||||
|  | ||||
| 	if [ -x "/usr/sbin/hostapd" ]; then | ||||
| 		procd_open_instance hostapd-$phy | ||||
| 		procd_set_param command /usr/sbin/hostapd -s -n $phy -g /var/run/hostapd-${phy}/global | ||||
| 		procd_set_param CREATE_TIME="$(date -r $phy)" # force restart on recreated phy | ||||
| 		procd_set_param respawn | ||||
| 		procd_close_instance | ||||
| 	fi | ||||
|  | ||||
| 	if [ -x "/usr/sbin/wpa_supplicant" ]; then | ||||
| 		procd_open_instance supplicant-$phy | ||||
| 		procd_set_param command /usr/sbin/wpa_supplicant -s -n $phy -g /var/run/wpa_supplicant-${phy}/global | ||||
| 		procd_set_param CREATE_TIME="$(date -r $phy)" # force restart on recreated phy | ||||
| 		procd_set_param respawn | ||||
| 		procd_close_instance | ||||
| 	fi | ||||
| done | ||||
|  | ||||
| procd_close_service set | ||||
|   | ||||
		Reference in New Issue
	
	Block a user