(
tb_bridge=$(/sbin/ifconfig bridge0)
case "$tb_bridge" in
*'inet 192.168.77.2 '*) ;;
*) echo 'Stop: run this on M4.'; exit 1 ;;
esac
tb_original=$(printf '%s\n' "$tb_bridge" | awk '/options=/{print}')
case "$tb_original" in
*'options=63<RXCSUM,TXCSUM,TSO4,TSO6>'*) ;;
*) echo 'Stop: offload flags differ from the baseline.'; exit 1 ;;
esac
tb_routes() {
for tb_target in 10.12.165.142 172.21.0.1; do
tb_if=$(/sbin/route -n get "$tb_target" | awk '/interface:/{print $2}')
[ "$tb_if" = utun10 ] || { echo "Stop: $tb_target uses $tb_if."; return 1; }
done
}
tb_flow() {
netstat -an -p tcp | awk '/194[.]186[.]63[.]/ && /ESTABLISHED/ {print $4, $5}'
}
tb_probe() {
date -u
netstat -an -p tcp | awk '/194[.]186[.]63[.]/ && /ESTABLISHED/ {print}'
/usr/bin/nc -4 -n -z -v -G 6 -w 6 10.12.165.142 8443
/usr/bin/dig @172.21.0.1 jss.corp.mail.ru A +time=4 +tries=1 +notcp +ignore +noall +comments +answer
netstat -an -p tcp | awk '/194[.]186[.]63[.]/ && /ESTABLISHED/ {print}'
}
tb_routes || exit 1
tb_initial_flow=$(tb_flow)
[ -n "$tb_initial_flow" ] || { echo 'Stop: no corporate TCP connection.'; exit 1; }
sudo -v || exit 1
echo 'BASELINE: TSO enabled'
tb_probe
tb_routes || exit 1
tb_restore() {
trap - EXIT
echo 'Restoring original TSO setting:'
if sudo -n /sbin/ifconfig bridge0 tso; then
tb_restored=$(/sbin/ifconfig bridge0 | awk '/options=/{print}')
printf '%s\n' "$tb_restored"
[ "$tb_restored" = "$tb_original" ] || echo 'WARNING: restored flags differ from the original.'
else
echo 'Restore failed. Run: sudo /sbin/ifconfig bridge0 tso'
fi
}
trap tb_restore EXIT
trap 'exit 130' HUP INT TERM
sudo -n /sbin/ifconfig bridge0 -tso || exit 1
tb_disabled=$(/sbin/ifconfig bridge0 | awk '/options=/{print}')
printf '%s\n' "$tb_disabled"
case "$tb_disabled" in
*'options=3<RXCSUM,TXCSUM>'*) ;;
*) echo 'Stop: expected TSO-only change did not take effect.'; exit 1 ;;
esac
echo 'TSO disabled temporarily; waiting 10 seconds for queued traffic.'
sleep 10
tb_routes || exit 1
echo 'COMPARISON: TSO disabled'
tb_probe
tb_routes || exit 1
if [ "$(tb_flow)" = "$tb_initial_flow" ]; then
echo 'Corporate TCP connection is unchanged.'
else
echo 'Corporate TCP connection changed; comparison is inconclusive.'
fi
)