I am using my own compile of the latest snapshot and periodically my router gives the following error ...
WARNING (wireless_add_process): executable path /usr/sbin/wpad does not match process path (/proc/exe)
I have managed to track this issue down to the the file /lib/netifd/netifd-wireless.sh and in particular the line ...
[ "$exe" != "$exe2" ] && echo "WARNING (wireless_add_process): executable path $exe does not match process $1 path ($exe2)"
This line is part of a function which is called by /lib/netifd/hostapd.sh and /lib/netifd/wireless/mac80211.sh.
Digging into those two files they both do very similar things, broadly speaking something along the following lines ...
local supplicant_pid=$(ubus call service list '{"name": "hostapd"}' | jsonfilter -l 1 -e "@['hostapd'].instances['supplicant'].pid")
wireless_add_process "$supplicant_pid" "/usr/sbin/wpa_supplicant" 1
When using wpad you get nothing from this query because the top level index to the hash is called "wpad" not "hostapd".
You can get this to work if the ubus command is changed to something like:
ubus call service list '{"name": "wpad"}' | jsonfilter -l 1 -e "@['wpad'].instances['supplicant'].pid"
It seems to me that we either need "wpad" to present as "hostapd" when querying using ubus, or these scripts need to acknowledge that "wpad" could be installed in place of "hostapd". I don't claim to know anything about how ubus functions, so perhaps somebody else could advise which of the two it should be, or possibly even fix this?