aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/utils/uqmi
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2016-09-22 20:07:45 +0200
committerFelix Fietkau <nbd@nbd.name>2016-10-12 11:58:59 +0200
commitdb47363ff75fc2531627da8b3593df99cd9cbc18 (patch)
treed8650ab092057bf73a9bacc4e4a992d7bb8e5959 /package/network/utils/uqmi
parent3b9b963e6e08eedcf4abff60998027018ab73ecd (diff)
downloadupstream-db47363ff75fc2531627da8b3593df99cd9cbc18.tar.gz
upstream-db47363ff75fc2531627da8b3593df99cd9cbc18.tar.bz2
upstream-db47363ff75fc2531627da8b3593df99cd9cbc18.zip
uqmi: re-enable autoconnect which was dropped without explanation
Fixes a regression in commit 8f24ee638275: "uqmi: Add proper IPv6 support" Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/network/utils/uqmi')
-rwxr-xr-xpackage/network/utils/uqmi/files/lib/netifd/proto/qmi.sh38
1 files changed, 24 insertions, 14 deletions
diff --git a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
index 81c1c3525f..53bf7a316a 100755
--- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
+++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh
@@ -82,6 +82,12 @@ proto_qmi_setup() {
return 1
}
+ # try to clear previous autoconnect state
+ # do not reuse previous wds client id to prevent hangs caused by stale data
+ uqmi -s -d "$device" \
+ --stop-network 0xffffffff \
+ --autoconnect > /dev/null
+
uqmi -s -d "$device" --set-data-format 802.3
uqmi -s -d "$device" --wda-set-data-format 802.3
@@ -106,7 +112,8 @@ proto_qmi_setup() {
${auth:+--auth-type $auth} \
${username:+--username $username} \
${password:+--password $password} \
- --ip-family ipv4`
+ --ip-family ipv4 \
+ --autoconnect`
[ $? -ne 0 ] && {
echo "Unable to connect IPv4"
uqmi -s -d "$device" --set-client-id wds,"$cid_4" --release-client-id wds
@@ -121,7 +128,7 @@ proto_qmi_setup() {
${auth:+--auth-type $auth} \
${username:+--username $username} \
${password:+--password $password} \
- --ip-family ipv6`
+ --ip-family ipv6 --autoconnect`
[ $? -ne 0 ] && {
echo "Unable to connect IPv6"
uqmi -s -d "$device" --set-client-id wds,"$cid_6" --release-client-id wds
@@ -198,6 +205,19 @@ proto_qmi_setup() {
}
}
+qmi_wds_stop() {
+ local cid="$1"
+ local pdh="$2"
+
+ [ -n "$cid" ] || return
+
+ # disable previous autoconnect state using the global handle
+ uqmi -s -d "$device" --set-client-id wds,"$cid" --stop-network "0xffffffff"
+
+ [ -n "$pdh" ] && uqmi -s -d "$device" --set-client-id wds,"$cid" --stop-network "$pdh"
+ uqmi -s -d "$device" --set-client-id wds,"$cid" --release-client-id wds
+}
+
proto_qmi_teardown() {
local interface="$1"
@@ -212,18 +232,8 @@ proto_qmi_teardown() {
json_select data
json_get_vars cid_4 pdh_4 cid_6 pdh_6
- [ -n "$cid_4" ] && {
- [ -n "$pdh_4" ] && {
- uqmi -s -d "$device" --set-client-id wds,"$cid_4" --stop-network "$pdh_4"
- uqmi -s -d "$device" --set-client-id wds,"$cid_4" --release-client-id wds
- }
- }
- [ -n "$cid_6" ] && {
- [ -n "$pdh_6" ] && {
- uqmi -s -d "$device" --set-client-id wds,"$cid_6" --stop-network "$pdh_6"
- uqmi -s -d "$device" --set-client-id wds,"$cid_6" --release-client-id wds
- }
- }
+ qmi_wds_stop "$cid_4" "$pdh_4"
+ qmi_wds_stop "$cid_6" "$pdh_6"
proto_init_update "*" 0
proto_send_update "$interface"