#!/bin/sh
# Configura el enlace entre r y srv: velocidad, retardo y fallas en cada sentido.
#   sh par/enlace.sh <velocidad> <rtt_ms> [perdida_datos_%] [perdida_ack_%] [corrupcion_datos_%]
#   sh par/enlace.sh limpio
# Los "datos" van de srv hacia r. Los ACK van de r hacia srv.
set -eu
srv=clab-w09-par-srv
r=clab-w09-par-r
docker exec "$srv" tc qdisc del dev eth1 root 2>/dev/null || true
docker exec "$r" tc qdisc del dev eth3 root 2>/dev/null || true
[ "$1" = limpio ] && exit 0

rate=$1
one_way=$(($2 / 2))
loss_data=${3:-0}
loss_ack=${4:-0}
corrupt=${5:-0}
# El límite de la cola alcanza para el producto velocidad por retardo de estos ejemplos.
docker exec "$srv" tc qdisc add dev eth1 root netem limit 20000 \
  delay "${one_way}ms" rate "$rate" loss "${loss_data}%" corrupt "${corrupt}%"
docker exec "$r" tc qdisc add dev eth3 root netem limit 20000 \
  delay "${one_way}ms" rate "$rate" loss "${loss_ack}%"
