mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
fc4b5411b3
This script was expecting only add/remove events which has not been the
case since Kernel 4.12 (which added bind/unbind). Bind events were getting
treated as remove events which would cause hotplugged 3g modems to not
work.
More info:
https://lkml.org/lkml/2018/12/23/128
https://github.com/systemd/systemd/issues/8221
Signed-off-by: Arjun AK <arjunak234@gmail.com>
(cherry picked from commit 89ef883b92
)
36 lines
753 B
Bash
36 lines
753 B
Bash
#!/bin/sh
|
|
. /lib/functions.sh
|
|
. /lib/netifd/netifd-proto.sh
|
|
|
|
find_3g_iface() {
|
|
local cfg="$1"
|
|
local tty="$2"
|
|
|
|
local proto
|
|
config_get proto "$cfg" proto
|
|
[ "$proto" = 3g ] || [ "$proto" = ncm ] || return 0
|
|
|
|
# bypass state vars here because 00-netstate could clobber .device
|
|
local dev=$(uci_get network "$cfg" device)
|
|
|
|
if [ "${dev##*/}" = "${tty##*/}" ]; then
|
|
if [ "$ACTION" = add ]; then
|
|
proto_set_available "$cfg" 1
|
|
fi
|
|
if [ "$ACTION" = remove ]; then
|
|
proto_set_available "$cfg" 0
|
|
fi
|
|
fi
|
|
}
|
|
|
|
[ "$ACTION" = add ] || [ "$ACTION" = remove ] || exit 0
|
|
|
|
case "$DEVICENAME" in
|
|
tty*)
|
|
[ -e "/dev/$DEVICENAME" ] || [ "$ACTION" = remove ] || exit 0
|
|
config_load network
|
|
config_foreach find_3g_iface interface "/dev/$DEVICENAME"
|
|
;;
|
|
esac
|
|
|