1f05cddf9SRui Paulo#!/bin/sh 2f05cddf9SRui Paulo 3f05cddf9SRui PauloIFNAME=$1 4f05cddf9SRui PauloCMD=$2 5f05cddf9SRui Paulo 6f05cddf9SRui Paulokill_daemon() { 7f05cddf9SRui Paulo NAME=$1 8f05cddf9SRui Paulo PF=$2 9f05cddf9SRui Paulo 10f05cddf9SRui Paulo if [ ! -r $PF ]; then 11f05cddf9SRui Paulo return 12f05cddf9SRui Paulo fi 13f05cddf9SRui Paulo 14f05cddf9SRui Paulo PID=`cat $PF` 15f05cddf9SRui Paulo if [ $PID -gt 0 ]; then 16f05cddf9SRui Paulo if ps $PID | grep -q $NAME; then 17f05cddf9SRui Paulo kill $PID 18f05cddf9SRui Paulo fi 19f05cddf9SRui Paulo fi 20f05cddf9SRui Paulo rm $PF 21f05cddf9SRui Paulo} 22f05cddf9SRui Paulo 23f05cddf9SRui Pauloif [ "$CMD" = "P2P-GROUP-STARTED" ]; then 24f05cddf9SRui Paulo GIFNAME=$3 25f05cddf9SRui Paulo if [ "$4" = "GO" ]; then 26f05cddf9SRui Paulo kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid 27f05cddf9SRui Paulo rm /var/run/dhclient.leases-$GIFNAME 28f05cddf9SRui Paulo kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME 29f05cddf9SRui Paulo ifconfig $GIFNAME 192.168.42.1 up 30f05cddf9SRui Paulo if ! dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \ 31f05cddf9SRui Paulo -i $GIFNAME \ 32f05cddf9SRui Paulo -F192.168.42.11,192.168.42.99; then 33f05cddf9SRui Paulo # another dnsmasq instance may be running and blocking us; try to 34f05cddf9SRui Paulo # start with -z to avoid that 35f05cddf9SRui Paulo dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \ 36f05cddf9SRui Paulo -i $GIFNAME \ 375b9c547cSRui Paulo -F192.168.42.11,192.168.42.99 --listen-address 192.168.42.1 -z -p 0 38f05cddf9SRui Paulo fi 39f05cddf9SRui Paulo fi 40f05cddf9SRui Paulo if [ "$4" = "client" ]; then 41f05cddf9SRui Paulo kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid 42f05cddf9SRui Paulo rm /var/run/dhclient.leases-$GIFNAME 43f05cddf9SRui Paulo kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME 445b9c547cSRui Paulo ipaddr=`echo "$*" | sed 's/.* ip_addr=\([^ ]*\).*/\1/'` 455b9c547cSRui Paulo ipmask=`echo "$*" | sed 's/.* ip_mask=\([^ ]*\).*/\1/'` 465b9c547cSRui Paulo goipaddr=`echo "$*" | sed 's/.* go_ip_addr=\([^ ]*\).*/\1/'` 475b9c547cSRui Paulo if echo "$ipaddr$ipmask$goipaddr" | grep -q ' '; then 485b9c547cSRui Paulo ipaddr="" 495b9c547cSRui Paulo ipmask="" 505b9c547cSRui Paulo goipaddr="" 515b9c547cSRui Paulo fi 525b9c547cSRui Paulo if [ -n "$ipaddr" ]; then 535b9c547cSRui Paulo sudo ifconfig $GIFNAME "$ipaddr" netmask "$ipmask" 545b9c547cSRui Paulo sudo ip ro re default via "$goipaddr" 555b9c547cSRui Paulo exit 0 565b9c547cSRui Paulo fi 57f05cddf9SRui Paulo dhclient -pf /var/run/dhclient-$GIFNAME.pid \ 58f05cddf9SRui Paulo -lf /var/run/dhclient.leases-$GIFNAME \ 59f05cddf9SRui Paulo -nw \ 60f05cddf9SRui Paulo $GIFNAME 61f05cddf9SRui Paulo fi 62f05cddf9SRui Paulofi 63f05cddf9SRui Paulo 64f05cddf9SRui Pauloif [ "$CMD" = "P2P-GROUP-REMOVED" ]; then 65f05cddf9SRui Paulo GIFNAME=$3 66f05cddf9SRui Paulo if [ "$4" = "GO" ]; then 67f05cddf9SRui Paulo kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME 68f05cddf9SRui Paulo ifconfig $GIFNAME 0.0.0.0 69f05cddf9SRui Paulo fi 70f05cddf9SRui Paulo if [ "$4" = "client" ]; then 71f05cddf9SRui Paulo kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid 72f05cddf9SRui Paulo rm /var/run/dhclient.leases-$GIFNAME 73f05cddf9SRui Paulo ifconfig $GIFNAME 0.0.0.0 74f05cddf9SRui Paulo fi 75f05cddf9SRui Paulofi 76f05cddf9SRui Paulo 77f05cddf9SRui Pauloif [ "$CMD" = "P2P-CROSS-CONNECT-ENABLE" ]; then 78f05cddf9SRui Paulo GIFNAME=$3 79f05cddf9SRui Paulo UPLINK=$4 80*c1d255d3SCy Schubert # enable NAT/masquerade $GIFNAME -> $UPLINK 81f05cddf9SRui Paulo iptables -P FORWARD DROP 82f05cddf9SRui Paulo iptables -t nat -A POSTROUTING -o $UPLINK -j MASQUERADE 83f05cddf9SRui Paulo iptables -A FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT 84f05cddf9SRui Paulo iptables -A FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT 85f05cddf9SRui Paulo sysctl net.ipv4.ip_forward=1 86f05cddf9SRui Paulofi 87f05cddf9SRui Paulo 88f05cddf9SRui Pauloif [ "$CMD" = "P2P-CROSS-CONNECT-DISABLE" ]; then 89f05cddf9SRui Paulo GIFNAME=$3 90f05cddf9SRui Paulo UPLINK=$4 91*c1d255d3SCy Schubert # disable NAT/masquerade $GIFNAME -> $UPLINK 92f05cddf9SRui Paulo sysctl net.ipv4.ip_forward=0 93f05cddf9SRui Paulo iptables -t nat -D POSTROUTING -o $UPLINK -j MASQUERADE 94f05cddf9SRui Paulo iptables -D FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT 95f05cddf9SRui Paulo iptables -D FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT 96f05cddf9SRui Paulofi 97