You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.4 KiB
Plaintext
84 lines
1.4 KiB
Plaintext
4 years ago
|
#!/bin/sh
|
||
|
|
||
|
. /lib/functions.sh
|
||
|
. /lib/functions/network.sh
|
||
|
. /lib/functions/hyfi-iface.sh
|
||
|
. /lib/functions/hyfi-network.sh
|
||
|
|
||
|
wan_protocol="pppoe"
|
||
|
|
||
|
__wan_pppoe_mode() {
|
||
|
local ifname wan_proto
|
||
|
|
||
|
ifname=`uci get network.wan.ifname`
|
||
|
wan_proto=`uci get network.wan.proto`
|
||
|
|
||
|
case "$ACTION" in
|
||
|
add)
|
||
|
if [[ "${ifname}" = "${INTERFACE}" -a "${wan_protocol}" = "${wan_proto}" ]];
|
||
|
then
|
||
|
return 1
|
||
|
fi
|
||
|
;;
|
||
|
remove)
|
||
|
if [[ "${ifname}" = "${INTERFACE}" -a "${wan_protocol}" = "${wan_proto}" ]];
|
||
|
then
|
||
|
return 1
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
hyd_restart_aggr() {
|
||
|
local fileflag="/tmp/.hyd.restart.pending"
|
||
|
|
||
|
touch "$fileflag"
|
||
|
|
||
|
sleep 7
|
||
|
|
||
|
[ -f "$fileflag" ] || return
|
||
|
|
||
|
a=`stat -c %Y $fileflag`
|
||
|
b=`date +%s`
|
||
|
c=`expr $b - $a`
|
||
|
[ "$c" -ge 7 ] || return
|
||
|
|
||
|
[ -f "$fileflag" ] || return
|
||
|
rm -f $fileflag
|
||
|
|
||
|
/etc/init.d/hyd restart
|
||
|
}
|
||
|
|
||
|
hyd_restart() {
|
||
|
local exescript
|
||
|
|
||
|
exescript=`ls /etc/hotplug.d/net/*hyd* 2>&-`
|
||
|
[ -n "$exescript" ] || return
|
||
|
|
||
|
# Restart with aggregation(background)
|
||
|
exescript="$exescript &"
|
||
|
eval $exescript
|
||
|
}
|
||
|
|
||
|
trap '' INT TERM ABRT QUIT ALRM
|
||
|
|
||
|
local enabled
|
||
|
config_load 'hyd'
|
||
|
config_get_bool enabled config 'Enable' '0'
|
||
|
[ "$enabled" -eq 0 ] && return
|
||
|
|
||
|
if [ -n "$1" ] ; then # Called by hotplugd
|
||
|
case "$INTERFACE" in
|
||
|
ath*|eth*|eth*.*|br*)
|
||
|
__wan_pppoe_mode
|
||
|
if [ "$?" -eq 0 ]; then
|
||
|
hyd_restart
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
else # Called directly
|
||
|
hyd_restart_aggr
|
||
|
fi
|
||
|
|