openwrt/package/network/utils/comgt/files/3g.usb
Arjun AK 89ef883b92 package/comgt: Handle bind/unbind events
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>
2021-07-02 11:09:57 +02:00

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