115 lines
1.6 KiB
Bash
Executable File
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 "$?"
|