30 lines
724 B
Bash
Executable File
30 lines
724 B
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Start/Stop network emulation
|
|
#
|
|
set -e
|
|
|
|
[[ $(uname) == Linux ]] || exit 0
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
sudo=
|
|
if sudo true; then
|
|
sudo="sudo -n"
|
|
fi
|
|
|
|
set -x
|
|
|
|
iface="$(ifconfig | grep mtu | grep -iv loopback | grep -i running | awk 'BEGIN { FS = ":" } ; {print $1}')"
|
|
|
|
if [[ "$1" = delete ]]; then
|
|
$sudo iptables -F -t mangle
|
|
else
|
|
$sudo iptables -A POSTROUTING -t mangle -p udp -j MARK --set-mark 1
|
|
fi
|
|
|
|
$sudo tc qdisc "$1" dev "$iface" root handle 1: prio
|
|
# shellcheck disable=SC2086 # Do not want to quote $2. It has space separated arguments for netem
|
|
$sudo tc qdisc "$1" dev "$iface" parent 1:3 handle 30: netem $2
|
|
$sudo tc filter "$1" dev "$iface" parent 1:0 protocol ip prio 3 handle 1 fw flowid 1:3
|