mirror of https://framagit.org/bortzmeyer/echoping
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.5 KiB
Plaintext
58 lines
1.5 KiB
Plaintext
15 years ago
|
#!/bin/sh
|
||
|
|
||
|
# Dangerous. Use only if you know what you do.
|
||
|
|
||
|
# Linux-only
|
||
|
|
||
|
# Configure the Linux traffic control to lose packets, in order to test
|
||
|
# echoping.
|
||
|
|
||
|
# http://linux-net.osdl.org/index.php/Netem
|
||
|
|
||
|
DEVICE="tap0"
|
||
|
PROTOCOL="udp"
|
||
|
DEST_PORTS="7 53"
|
||
|
# In percent
|
||
|
LOSS=20
|
||
|
# In milli-seconds
|
||
|
DELAY=40
|
||
|
CLEAN_FIRST="YES"
|
||
|
USE_IPTABLES="YES"
|
||
|
|
||
|
# Do not touch afterwards
|
||
|
INTERESTING="4"
|
||
|
PLAIN="0"
|
||
|
|
||
|
if [ ! -z "$CLEAN_FIRST" ]; then
|
||
|
tc qdisc del dev ${DEVICE} root
|
||
|
iptables -t mangle -F INPUT
|
||
|
iptables -t mangle -F OUTPUT
|
||
|
fi
|
||
|
|
||
|
tc qdisc add dev ${DEVICE} root handle 1: prio
|
||
|
|
||
|
tc qdisc add dev ${DEVICE} parent 1:2 handle ${INTERESTING}: \
|
||
|
netem delay ${DELAY}ms loss ${LOSS}%
|
||
|
|
||
|
#tc qdisc add dev ${DEVICE} parent ${INTERESTING}:1 \
|
||
|
# tbf rate 20kbit buffer 1600 limit 3000
|
||
|
|
||
|
if [ -z "$USE_IPTABLES" ] || [ "$USE_IPTABLES" = "NO" ]; then
|
||
|
for port in ${DEST_PORTS}; do
|
||
|
# Note: $PROTOCOL is ignored...
|
||
|
tc filter add dev ${DEVICE} protocol ip parent 1:0 prio 2 u32 \
|
||
|
match ip dport ${port} 0xffff flowid 10:5
|
||
|
done
|
||
|
else
|
||
|
tc filter add dev ${DEVICE} protocol ip parent 1:0 prio 2 \
|
||
|
handle ${INTERESTING} fw flowid 10:5
|
||
|
# Not perfect: it seems all ports are affected :-(
|
||
|
for port in ${DEST_PORTS}; do
|
||
|
# Ingress
|
||
|
iptables -t mangle -A INPUT -i ${DEVICE} -p ${PROTOCOL} --sport ${port} \
|
||
|
-j MARK --set-mark ${INTERESTING}
|
||
|
# Egress
|
||
|
iptables -t mangle -A OUTPUT -o ${DEVICE} -p ${PROTOCOL} --dport ${port} \
|
||
|
-j MARK --set-mark ${INTERESTING}
|
||
|
done
|
||
|
fi
|