mir3c/squashfs-root/usr/sbin/phyhelper

115 lines
1.6 KiB
Bash
Executable File

#! /bin/sh
# help do swith PHY
. /lib/functions.sh
sw_allow_eapol() { return 0; }
sw_restore_eapol() { return 0; }
. /lib/xq-misc/phy_switch.sh
usage () {
echo "control phy swith"
echo "$0 start"
echo "$0 stop"
echo "$0 restart"
echo "$0 gwan - get wan speed"
echo "$0 swan [1000|100|10] - set wan speed"
exit 1
}
phy_stop_lan() {
sw_stop_lan
return $?
}
phy_start_lan() {
sw_start_lan
return $?
}
# make client resend DHCP request
phy_restart_lan() {
phy_stop_lan || return 1
sleep 3
phy_start_lan || return 1
return 0
}
phy_get_wan_speed() {
if sw_is_wan_giga; then
echo "1000Mb"
return 0
fi
if sw_is_wan_100m; then
echo "100Mb"
else
echo "10Mb"
fi
return 1
}
phy_set_wan_speed() {
[ -z "$1" ] && echo "set speed value!" && return 1
speed="$1"
shift
case "$speed" in
10)
sw_set_wan_100m 10
sw_set_wan_giga off
;;
100)
sw_set_wan_100m 100
sw_set_wan_giga off
;;
1000)
sw_set_wan_giga on
;;
*)
echo "unsupport speed!"
return 1
;;
esac
# issue re-negotiat
if sw_reneg_wan; then
# let phy do re-neg
[ -z "$1" ] && sleep 2
echo "set WAN speed to ${speed}Mb"
return 0
else
ehco 'renegotiation fail!'
return 1
fi
}
case "$1" in
stop)
phy_stop_lan
;;
start)
phy_start_lan
;;
restart)
phy_restart_lan
exit $?
;;
gwan)
phy_get_wan_speed
;;
swan)
shift
phy_set_wan_speed "$1"
;;
set_eap)
sw_allow_eapol
;;
del_eap)
sw_restore_eapol
;;
*)
usage
;;
esac
exit "$?"