mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-01-30 10:44:32 +01:00
113 lines
3 KiB
Text
113 lines
3 KiB
Text
. /lib/network/config.sh
|
|
|
|
# FIX: for EG300 WAN port for release 3.13.1 - 4.x
|
|
if [ "$INTERFACE" == "eth2" ]; then
|
|
touch /var/update.eth2
|
|
fi
|
|
# end FIX
|
|
|
|
addif() {
|
|
# check if wan had a event and start all related services
|
|
wan=`uci -q get layer2_interface_ethernet.Wan.baseifname`
|
|
if [ "$INTERFACE" == "$wan" ]; then
|
|
/etc/init.d/layer2_interface_ethernet start
|
|
/etc/init.d/layer2_interface_vlan start
|
|
fi
|
|
}
|
|
|
|
delif() {
|
|
##remove ethernet wan and nuke any vlans associated
|
|
wan=`uci -q get layer2_interface_ethernet.Wan.baseifname`
|
|
if [ "$INTERFACE" == "$wan" ]; then
|
|
/etc/init.d/layer2_interface_ethernet stop
|
|
fi
|
|
}
|
|
|
|
# true if speed on interface is Gbit
|
|
gigatest() {
|
|
local speed=$(ethctl $INTERFACE media-type 2>&1 | awk '{if (NR == 2) print $6}')
|
|
case "$speed" in
|
|
1000*) return 0 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
# true if there is a link on any lan port
|
|
lan_test () {
|
|
local landev=$(db get hw.board.ethernetLanPorts)
|
|
local ledontest
|
|
for dev in $landev; do
|
|
ledontest=$(cat /sys/class/net/$dev/operstate)
|
|
if [ "$ledontest" == "up" ]; then
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
|
|
# true if adsl or vdsl is up.
|
|
dsltest() {
|
|
if cat /var/state/layer2_interface 2>/dev/null | grep 'adsl\|vdsl' | grep up; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
case "$ACTION" in
|
|
add|register)
|
|
case "$PHYSDEVDRIVER" in
|
|
natsemi) sleep 1 ;;
|
|
esac
|
|
addif
|
|
local interfname=$(interfacename $INTERFACE)
|
|
local operstate=$(cat /sys/class/net/$INTERFACE/operstate)
|
|
# if [ "$operstate" == "up" ]; then
|
|
if true ; then
|
|
case "$interfname" in
|
|
GbE*)
|
|
ubus call led.lan set '{"state" : "ok"}'
|
|
ubus call led.gbe set '{"state" : "ok"}'
|
|
ubus call led.gbe_phy_link set '{"state" : "ok"}'
|
|
ubus call led.gbe_phy_speed set '{"state": "off"}'
|
|
$(gigatest) && ubus call led.gbe_phy_speed set '{"state":"ok"}'
|
|
;;
|
|
LAN*)
|
|
ubus call led.lan set '{"state":"ok"}'
|
|
;;
|
|
WAN*)
|
|
ubus call led.wan set '{"state" : "ok"}'
|
|
ubus call led.wan_phy_link set '{"state" : "ok"}'
|
|
ubus call led.wan_phy_speed set '{"state" : "off"}'
|
|
$(gigatest) && ubus call led.wan_phy_speed set '{"state":"ok"}'
|
|
;;
|
|
esac
|
|
fi
|
|
;;
|
|
remove|unregister)
|
|
local interfname=$(interfacename $INTERFACE)
|
|
local operstate=$(cat /sys/class/net/$INTERFACE/operstate)
|
|
if [ "$operstate" == "down" ]; then
|
|
case "$interfname" in
|
|
GbE*)
|
|
ubus call led.gbe set '{"state" : "off"}'
|
|
ubus call led.gbe_phy_link set '{"state" : "off"}'
|
|
ubus call led.gbe_phy_speed set '{"state" : "off"}'
|
|
$(lan_test) || ubus call led.lan set '{"state":"off"}'
|
|
;;
|
|
LAN*)
|
|
$(lan_test) || ubus call led.lan set '{"state":"off"}'
|
|
;;
|
|
WAN*)
|
|
ubus call led.wan set '{"state" : "off"}'
|
|
ubus call led.wan_phy_speed set '{"state" : "off"}'
|
|
ubus call led.wan_phy_link set '{"state" : "off"}'
|
|
# is this needed here ?? don't the dsl hotplug event control this ???
|
|
# $(dsltest) || ubus call led.dsl set '{"state":"off"}'
|
|
;;
|
|
esac
|
|
fi
|
|
delif
|
|
;;
|
|
esac
|
|
|