uqmi: use correct value for connection checking

Originally, the implementation only checked if uqmi command
execution succeeded properly without actually checking it's returned data.

This lead to a pass, even when the returned data was indicating an error.

Rework the verification to actually check the returned data,
which can only be correct if the uqmi command itself also executed correctly.

On command execution success, value "pdh_" is a pure numeric value.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
openwrt-18.06
Koen Vandeputte 2018-02-07 13:23:27 +01:00 committed by John Crispin
parent 3c5471032b
commit 3508f8abb4
1 changed files with 8 additions and 4 deletions

View File

@ -156,12 +156,14 @@ proto_qmi_setup() {
${username:+--username $username} \ ${username:+--username $username} \
${password:+--password $password} \ ${password:+--password $password} \
${autoconnect:+--autoconnect}) ${autoconnect:+--autoconnect})
[ $? -ne 0 ] && {
# pdh_4 is a numeric value on success
if ! [ "$pdh_4" -eq "$pdh_4" ] 2> /dev/null; then
echo "Unable to connect IPv4" echo "Unable to connect IPv4"
uqmi -s -d "$device" --set-client-id wds,"$cid_4" --release-client-id wds uqmi -s -d "$device" --set-client-id wds,"$cid_4" --release-client-id wds
proto_notify_error "$interface" CALL_FAILED proto_notify_error "$interface" CALL_FAILED
return 1 return 1
} fi
} }
[ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && { [ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && {
@ -182,12 +184,14 @@ proto_qmi_setup() {
${username:+--username $username} \ ${username:+--username $username} \
${password:+--password $password} \ ${password:+--password $password} \
${autoconnect:+--autoconnect}) ${autoconnect:+--autoconnect})
[ $? -ne 0 ] && {
# pdh_6 is a numeric value on success
if ! [ "$pdh_6" -eq "$pdh_6" ] 2> /dev/null; then
echo "Unable to connect IPv6" echo "Unable to connect IPv6"
uqmi -s -d "$device" --set-client-id wds,"$cid_6" --release-client-id wds uqmi -s -d "$device" --set-client-id wds,"$cid_6" --release-client-id wds
proto_notify_error "$interface" CALL_FAILED proto_notify_error "$interface" CALL_FAILED
return 1 return 1
} fi
} }
echo "Setting up $ifname" echo "Setting up $ifname"