mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-16 07:27:26 +00:00
comgt: ncm: allow specification of interface name
Add ifname property to UCI, which can be used to override the autodetected interface name in case the detection fails due to having none or more than one interface exposed by the modem, which is not explicitly linked to TTY port. This is needed on certain variants of ZTE MF286R built-in modem, which exposes both RNDIS and CDC-ECM interfaces on the modem, on which the automatic detection may select the wrong network interface. Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
This commit is contained in:
parent
c99013e242
commit
a67629bbe2
@ -10,6 +10,7 @@ proto_ncm_init_config() {
|
||||
no_device=1
|
||||
available=1
|
||||
proto_config_add_string "device:device"
|
||||
proto_config_add_string ifname
|
||||
proto_config_add_string apn
|
||||
proto_config_add_string auth
|
||||
proto_config_add_string username
|
||||
@ -25,10 +26,10 @@ proto_ncm_init_config() {
|
||||
proto_ncm_setup() {
|
||||
local interface="$1"
|
||||
|
||||
local manufacturer initialize setmode connect finalize ifname devname devpath
|
||||
local manufacturer initialize setmode connect finalize devname devpath
|
||||
|
||||
local device apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS
|
||||
json_get_vars device apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS
|
||||
local device ifname apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS
|
||||
json_get_vars device ifname apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS
|
||||
|
||||
[ "$metric" = "" ] && metric="0"
|
||||
|
||||
@ -53,17 +54,20 @@ proto_ncm_setup() {
|
||||
return 1
|
||||
}
|
||||
|
||||
devname="$(basename "$device")"
|
||||
case "$devname" in
|
||||
'tty'*)
|
||||
devpath="$(readlink -f /sys/class/tty/$devname/device)"
|
||||
ifname="$( ls "$devpath"/../../*/net )"
|
||||
;;
|
||||
*)
|
||||
devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"
|
||||
ifname="$( ls "$devpath"/net )"
|
||||
;;
|
||||
esac
|
||||
[ -z "$ifname" ] && {
|
||||
devname="$(basename "$device")"
|
||||
case "$devname" in
|
||||
'tty'*)
|
||||
devpath="$(readlink -f /sys/class/tty/$devname/device)"
|
||||
ifname="$( ls "$devpath"/../../*/net )"
|
||||
;;
|
||||
*)
|
||||
devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"
|
||||
ifname="$( ls "$devpath"/net )"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
[ -n "$ifname" ] || {
|
||||
echo "The interface could not be found."
|
||||
proto_notify_error "$interface" NO_IFACE
|
||||
|
Loading…
x
Reference in New Issue
Block a user