uqmi: ensure CID is a numeric value before proceeding

The current implementation only checked if uqmi itself executed
correctly which is also the case when the returned value is actually
an error.

Rework this, checking that CID is a numeric value, which can only
be true if uqmi itself also executed correctly.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
Koen Vandeputte 2018-02-19 11:02:45 +01:00 committed by John Crispin
parent b934aa2f21
commit 788312ca59

View File

@ -140,11 +140,11 @@ proto_qmi_setup() {
[ "$pdptype" = "ip" -o "$pdptype" = "ipv4v6" ] && { [ "$pdptype" = "ip" -o "$pdptype" = "ipv4v6" ] && {
cid_4=$(uqmi -s -d "$device" --get-client-id wds) cid_4=$(uqmi -s -d "$device" --get-client-id wds)
[ $? -ne 0 ] && { if ! [ "$cid_4" -eq "$cid_4" ] 2> /dev/null; then
echo "Unable to obtain client ID" echo "Unable to obtain client ID"
proto_notify_error "$interface" NO_CID proto_notify_error "$interface" NO_CID
return 1 return 1
} fi
uqmi -s -d "$device" --set-client-id wds,"$cid_4" --set-ip-family ipv4 > /dev/null uqmi -s -d "$device" --set-client-id wds,"$cid_4" --set-ip-family ipv4 > /dev/null
@ -177,11 +177,11 @@ proto_qmi_setup() {
[ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && { [ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && {
cid_6=$(uqmi -s -d "$device" --get-client-id wds) cid_6=$(uqmi -s -d "$device" --get-client-id wds)
[ $? -ne 0 ] && { if ! [ "$cid_6" -eq "$cid_6" ] 2> /dev/null; then
echo "Unable to obtain client ID" echo "Unable to obtain client ID"
proto_notify_error "$interface" NO_CID proto_notify_error "$interface" NO_CID
return 1 return 1
} fi
uqmi -s -d "$device" --set-client-id wds,"$cid_6" --set-ip-family ipv6 > /dev/null uqmi -s -d "$device" --set-client-id wds,"$cid_6" --set-ip-family ipv6 > /dev/null