# Tested on ROSv7
#
# This script checks the 60G signal and blocks the link for a period of time if the signal is too low.
# Install this script on the client side of the 60G link.
# Parameters that may be changed - w60MinQuality, WaitTime, loglevel :local w60txmcs;
:local w60txphy;
:local w60sigqual;
:local w60MinQuality 20; # Minimum Quality Level - disable link if signal is lower than this - Value: 0-100 :global WaitCounter;
:local WaitTime 10; # Number of times the script runs before the link is enabled again :local LANPortName [/interface get value-name=name [find default-name=ether1]];
:local portDisabled [ /interface bridge port get value-name=disabled [ find interface=$LANPortName ] ]; :local loglevel 0; # loglevel : 0=off, 1=normal, 2=debug /interface w60 monitor 0 once do={
:set w60txmcs $"tx-mcs";
:set w60txphy $"tx-phy-rate";
:set w60sigqual $"signal";
}; :if ( $loglevel > 1 ) do={
:log info "LAN Port Name = $LANPortName";
:log info "Is Port Disabled = $portDisabled";
:log info "$w60txmcs - $w60txphy - $w60sigqual";
}; :if ( $w60sigqual < "$w60MinQuality" ) do={
# Low Signal - block traffic
:set WaitCounter $WaitTime;
/interface bridge port disable [ find interface=$LANPortName ];
if ($loglevel > 0) do={:log info "Low Signal - $w60sigqual - block traffic";};
}; :if (( $WaitCounter < 1 ) && ( $portDisabled = true )) do={
# Signal OK and wait is over - enable bridge port - let traffic pass
/interface bridge port enable [ find interface=$LANPortName ];
:set WaitCounter 0; if ( $loglevel > 0 ) do={:log info "Signal OK - $w60sigqual - let traffic pass";};
}; :if ( $WaitCounter > 0 ) do={:set WaitCounter ($WaitCounter-1);}; :if ( $loglevel > 1 ) do={:log info "WaitCounter = $WaitCounter";};