mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-18 21:05:26 +00:00
umbim: detect actual connection IP type
Current implementation needlessly creates both IPv4 and IPv6 sub-interfaces for single-stack IP types. Limit this only to selected IP type. While at that, ensure that IP type is also passed to umbim during "connect" phase. In addition, detect the actual established connection type returned by umbim and set up subinterfaces according to that, not to requested configuration. While at that, allow empty IP type explicitly, interpreted as "any" according to MBIM specification. Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
This commit is contained in:
parent
da84eddedb
commit
356a6f0eee
@ -149,10 +149,13 @@ _proto_mbim_setup() {
|
||||
tid=$((tid + 1))
|
||||
|
||||
pdptype=$(echo "$pdptype" | awk '{print tolower($0)}')
|
||||
[ "$pdptype" = "ipv4" -o "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] || pdptype="ipv4v6"
|
||||
|
||||
local req_pdptype="" # Pass "default" PDP type to umbim if unconfigured
|
||||
[ "$pdptype" = "ipv4" -o "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && req_pdptype="$pdptype:"
|
||||
|
||||
local connect_state
|
||||
echo "mbim[$$]" "Connect to network"
|
||||
umbim $DBG -n -t $tid -d $device connect "$pdptype:$apn" "$auth" "$username" "$password" || {
|
||||
connect_state=$(umbim $DBG -n -t $tid -d $device connect "$req_pdptype$apn" "$auth" "$username" "$password") || {
|
||||
echo "mbim[$$]" "Failed to connect bearer"
|
||||
tid=$((tid + 1))
|
||||
umbim $DBG -t $tid -d "$device" disconnect
|
||||
@ -161,6 +164,9 @@ _proto_mbim_setup() {
|
||||
}
|
||||
tid=$((tid + 1))
|
||||
|
||||
echo "$connect_state"
|
||||
local iptype="$(echo "$connect_state" | grep iptype: | awk '{print $4}')"
|
||||
|
||||
echo "mbim[$$]" "Connected"
|
||||
|
||||
if [ "$dhcp" = 0 ]; then
|
||||
@ -171,7 +177,7 @@ _proto_mbim_setup() {
|
||||
proto_init_update "$ifname" 1
|
||||
proto_send_update "$interface"
|
||||
|
||||
[ "$pdptype" = "ipv4" -o "$pdptype" = "ipv4v6" ] && {
|
||||
[ "$iptype" != "ipv6" ] && {
|
||||
json_init
|
||||
json_add_string name "${interface}_4"
|
||||
json_add_string ifname "@$interface"
|
||||
@ -188,7 +194,7 @@ _proto_mbim_setup() {
|
||||
ubus call network add_dynamic "$(json_dump)"
|
||||
}
|
||||
|
||||
[ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && {
|
||||
[ "$iptype" != "ipv4" ] && {
|
||||
json_init
|
||||
json_add_string name "${interface}_6"
|
||||
json_add_string ifname "@$interface"
|
||||
|
Loading…
Reference in New Issue
Block a user