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
 |