travelmate: bugfix 0.2.6
* fix two potential race conditions in ap/sta handling Signed-off-by: Dirk Brenken <dev@brenken.org>
This commit is contained in:
parent
32fb90fd68
commit
70c08bfc22
3 changed files with 31 additions and 7 deletions
|
@ -6,7 +6,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=travelmate
|
||||
PKG_VERSION:=0.2.5
|
||||
PKG_VERSION:=0.2.6
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-3.0+
|
||||
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
|
||||
|
|
|
@ -69,9 +69,19 @@ config zone
|
|||
[...]
|
||||
</code></pre>
|
||||
|
||||
**3. add required wwan stations to your wireless configuration in etc/config/wireless:**
|
||||
**3. add required ap and wwan stations to your wireless configuration in etc/config/wireless:**
|
||||
<pre><code>
|
||||
[...]
|
||||
config wifi-iface
|
||||
option device 'radio0'
|
||||
option network 'lan'
|
||||
option ifname 'wlan0'
|
||||
option mode 'ap'
|
||||
option ssid 'example_ap'
|
||||
option encryption 'psk2+ccmp'
|
||||
option key 'abc'
|
||||
option disabled '0'
|
||||
[...]
|
||||
config wifi-iface
|
||||
option device 'radio0'
|
||||
option network 'wwan'
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
LC_ALL=C
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
trm_pid="${$}"
|
||||
trm_ver="0.2.5"
|
||||
trm_ver="0.2.6"
|
||||
trm_debug=0
|
||||
trm_loop=30
|
||||
trm_maxretry=3
|
||||
|
@ -29,7 +29,7 @@ trm_prepare()
|
|||
local ifname="$(uci -q get wireless."${config}".ifname)"
|
||||
local disabled="$(uci -q get wireless."${config}".disabled)"
|
||||
|
||||
if [ "${mode}" = "ap" ] &&
|
||||
if [ "${mode}" = "ap" ] && [ -n "${network}" ] && [ -n "${ifname}" ] &&
|
||||
([ -z "${trm_device}" ] || [ "${trm_device}" = "${device}" ])
|
||||
then
|
||||
trm_aplist="${trm_aplist} ${ifname}"
|
||||
|
@ -37,7 +37,7 @@ trm_prepare()
|
|||
then
|
||||
trm_set "none" "${config}" "${network}" "up"
|
||||
fi
|
||||
elif [ "${mode}" = "sta" ]
|
||||
elif [ "${mode}" = "sta" ] && [ -n "${network}" ]
|
||||
then
|
||||
trm_stalist="${trm_stalist} ${config}_${network}"
|
||||
if [ -z "${disabled}" ] || [ "${disabled}" = "0" ]
|
||||
|
@ -181,7 +181,7 @@ fi
|
|||
if [ -z "${trm_scanner}" ]
|
||||
then
|
||||
trm_log "error" "no wireless tool for wlan scanning found, please install 'iw' or 'iwinfo'"
|
||||
exit 255
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# infinitive loop to establish and track STA uplink connections
|
||||
|
@ -195,6 +195,11 @@ do
|
|||
config_load wireless
|
||||
config_foreach trm_prepare wifi-iface
|
||||
trm_set "commit"
|
||||
if [ -z "${trm_aplist}" ]
|
||||
then
|
||||
trm_log "error" "no usable AP configuration found, please add an 'ifname' entry in '/etc/config/wireless'"
|
||||
exit 1
|
||||
fi
|
||||
for ap in ${trm_aplist}
|
||||
do
|
||||
ubus -t 10 wait_for hostapd."${ap}"
|
||||
|
@ -204,15 +209,24 @@ do
|
|||
else
|
||||
trm_ssidlist="$(${trm_scanner} "${ap}" scan | awk '/ESSID: ".*"/{ORS=" ";if (!seen[$0]++) for(i=2; i<=NF; i++) print $i}')"
|
||||
fi
|
||||
trm_log "debug" "main ::: scan-tool: ${trm_scanner}, ssidlist: ${trm_ssidlist}"
|
||||
trm_log "debug" "main ::: scan-tool: ${trm_scanner}, aplist: ${trm_aplist}, ssidlist: ${trm_ssidlist}"
|
||||
if [ -n "${trm_ssidlist}" ]
|
||||
then
|
||||
if [ -z "${trm_stalist}" ]
|
||||
then
|
||||
trm_log "error" "no usable STA configuration found, please add a 'network' entry in '/etc/config/wireless'"
|
||||
exit 1
|
||||
fi
|
||||
for sta in ${trm_stalist}
|
||||
do
|
||||
trm_config="${sta%%_*}"
|
||||
trm_network="${sta##*_}"
|
||||
trm_ifname="$(uci -q get wireless."${trm_config}".ifname)"
|
||||
trm_ssid="\"$(uci -q get wireless."${trm_config}".ssid)\""
|
||||
if [ -z "${trm_ifname}" ]
|
||||
then
|
||||
trm_ifname="${trm_network}"
|
||||
fi
|
||||
if [ $((trm_count_${trm_config})) -lt $((trm_maxretry)) ] || [ $((trm_maxretry)) -eq 0 ]
|
||||
then
|
||||
if [ -n "$(printf "${trm_ssidlist}" | grep -Fo "${trm_ssid}")" ]
|
||||
|
|
Loading…
Reference in a new issue