umbim: add support for non-dhcp mode

There are mbim compatible wwan modules available which do not support
the dhcp autoconfiguration. (e.g. gemalto Cinterion ELS81)

This adds the possibility to get the configuration parameters from mbim.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
This commit is contained in:
Martin Schiller 2020-02-07 12:50:22 +01:00 committed by Hauke Mehrtens
parent ec6bcda8e4
commit 512bb17f3e

View File

@ -19,6 +19,7 @@ proto_mbim_init_config() {
proto_config_add_string auth
proto_config_add_string username
proto_config_add_string password
proto_config_add_boolean dhcp
proto_config_add_defaults
}
@ -27,8 +28,8 @@ _proto_mbim_setup() {
local tid=2
local ret
local device apn pincode delay allow_roaming allow_partner $PROTO_DEFAULT_OPTIONS
json_get_vars device apn pincode delay auth username password allow_roaming allow_partner $PROTO_DEFAULT_OPTIONS
local device apn pincode delay allow_roaming allow_partner dhcp $PROTO_DEFAULT_OPTIONS
json_get_vars device apn pincode delay auth username password allow_roaming allow_partner dhcp $PROTO_DEFAULT_OPTIONS
[ -n "$ctl_device" ] && device=$ctl_device
@ -153,9 +154,47 @@ _proto_mbim_setup() {
done
tid=$((tid + 1))
uci_set_state network $interface tid "$tid"
echo "mbim[$$]" "Connected"
echo "mbim[$$]" "Connected, starting DHCP"
if [ "$dhcp" = 0 ]; then
echo "mbim[$$]" "Setting up $ifname"
eval $(umbim $DBG -n -t $tid -d $device config | sed 's/: /=/g')
tid=$((tid + 1))
proto_init_update "$ifname" 1
proto_send_update "$interface"
json_init
json_add_string name "${interface}_4"
json_add_string ifname "@$interface"
json_add_string proto "static"
json_add_array ipaddr
json_add_string "" "$ipv4address"
json_close_array
json_add_string gateway "$ipv4gateway"
json_add_array dns
json_add_string "" "$ipv4dnsserver"
json_close_array
proto_add_dynamic_defaults
json_close_object
ubus call network add_dynamic "$(json_dump)"
json_init
json_add_string name "${interface}_6"
json_add_string ifname "@$interface"
json_add_string proto "static"
json_add_array ip6addr
json_add_string "" "$ipv6address"
json_close_array
json_add_string ip6gw "$ipv6gateway"
json_add_array dns
json_add_string "" "$ipv6dnsserver"
json_close_array
proto_add_dynamic_defaults
json_close_object
ubus call network add_dynamic "$(json_dump)"
else
echo "mbim[$$]" "Starting DHCP on $ifname"
proto_init_update "$ifname" 1
proto_send_update "$interface"
@ -175,6 +214,9 @@ _proto_mbim_setup() {
proto_add_dynamic_defaults
json_close_object
ubus call network add_dynamic "$(json_dump)"
fi
uci_set_state network $interface tid "$tid"
}
proto_mbim_setup() {