1252190Srpaulo#!/bin/sh 2252190Srpaulo 3252190SrpauloIFNAME=$1 4252190SrpauloCMD=$2 5252190Srpaulo 6252190Srpaulokill_daemon() { 7252190Srpaulo NAME=$1 8252190Srpaulo PF=$2 9252190Srpaulo 10252190Srpaulo if [ ! -r $PF ]; then 11252190Srpaulo return 12252190Srpaulo fi 13252190Srpaulo 14252190Srpaulo PID=`cat $PF` 15252190Srpaulo if [ $PID -gt 0 ]; then 16252190Srpaulo if ps $PID | grep -q $NAME; then 17252190Srpaulo kill $PID 18252190Srpaulo fi 19252190Srpaulo fi 20252190Srpaulo rm $PF 21252190Srpaulo} 22252190Srpaulo 23252190Srpauloif [ "$CMD" = "P2P-GROUP-STARTED" ]; then 24252190Srpaulo GIFNAME=$3 25252190Srpaulo if [ "$4" = "GO" ]; then 26252190Srpaulo kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid 27252190Srpaulo rm /var/run/dhclient.leases-$GIFNAME 28252190Srpaulo kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME 29252190Srpaulo ifconfig $GIFNAME 192.168.42.1 up 30252190Srpaulo if ! dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \ 31252190Srpaulo -i $GIFNAME \ 32252190Srpaulo -F192.168.42.11,192.168.42.99; then 33252190Srpaulo # another dnsmasq instance may be running and blocking us; try to 34252190Srpaulo # start with -z to avoid that 35252190Srpaulo dnsmasq -x /var/run/dnsmasq.pid-$GIFNAME \ 36252190Srpaulo -i $GIFNAME \ 37281806Srpaulo -F192.168.42.11,192.168.42.99 --listen-address 192.168.42.1 -z -p 0 38252190Srpaulo fi 39252190Srpaulo fi 40252190Srpaulo if [ "$4" = "client" ]; then 41252190Srpaulo kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid 42252190Srpaulo rm /var/run/dhclient.leases-$GIFNAME 43252190Srpaulo kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME 44281806Srpaulo ipaddr=`echo "$*" | sed 's/.* ip_addr=\([^ ]*\).*/\1/'` 45281806Srpaulo ipmask=`echo "$*" | sed 's/.* ip_mask=\([^ ]*\).*/\1/'` 46281806Srpaulo goipaddr=`echo "$*" | sed 's/.* go_ip_addr=\([^ ]*\).*/\1/'` 47281806Srpaulo if echo "$ipaddr$ipmask$goipaddr" | grep -q ' '; then 48281806Srpaulo ipaddr="" 49281806Srpaulo ipmask="" 50281806Srpaulo goipaddr="" 51281806Srpaulo fi 52281806Srpaulo if [ -n "$ipaddr" ]; then 53281806Srpaulo sudo ifconfig $GIFNAME "$ipaddr" netmask "$ipmask" 54281806Srpaulo sudo ip ro re default via "$goipaddr" 55281806Srpaulo exit 0 56281806Srpaulo fi 57252190Srpaulo dhclient -pf /var/run/dhclient-$GIFNAME.pid \ 58252190Srpaulo -lf /var/run/dhclient.leases-$GIFNAME \ 59252190Srpaulo -nw \ 60252190Srpaulo $GIFNAME 61252190Srpaulo fi 62252190Srpaulofi 63252190Srpaulo 64252190Srpauloif [ "$CMD" = "P2P-GROUP-REMOVED" ]; then 65252190Srpaulo GIFNAME=$3 66252190Srpaulo if [ "$4" = "GO" ]; then 67252190Srpaulo kill_daemon dnsmasq /var/run/dnsmasq.pid-$GIFNAME 68252190Srpaulo ifconfig $GIFNAME 0.0.0.0 69252190Srpaulo fi 70252190Srpaulo if [ "$4" = "client" ]; then 71252190Srpaulo kill_daemon dhclient /var/run/dhclient-$GIFNAME.pid 72252190Srpaulo rm /var/run/dhclient.leases-$GIFNAME 73252190Srpaulo ifconfig $GIFNAME 0.0.0.0 74252190Srpaulo fi 75252190Srpaulofi 76252190Srpaulo 77252190Srpauloif [ "$CMD" = "P2P-CROSS-CONNECT-ENABLE" ]; then 78252190Srpaulo GIFNAME=$3 79252190Srpaulo UPLINK=$4 80252190Srpaulo # enable NAT/masquarade $GIFNAME -> $UPLINK 81252190Srpaulo iptables -P FORWARD DROP 82252190Srpaulo iptables -t nat -A POSTROUTING -o $UPLINK -j MASQUERADE 83252190Srpaulo iptables -A FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT 84252190Srpaulo iptables -A FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT 85252190Srpaulo sysctl net.ipv4.ip_forward=1 86252190Srpaulofi 87252190Srpaulo 88252190Srpauloif [ "$CMD" = "P2P-CROSS-CONNECT-DISABLE" ]; then 89252190Srpaulo GIFNAME=$3 90252190Srpaulo UPLINK=$4 91252190Srpaulo # disable NAT/masquarade $GIFNAME -> $UPLINK 92252190Srpaulo sysctl net.ipv4.ip_forward=0 93252190Srpaulo iptables -t nat -D POSTROUTING -o $UPLINK -j MASQUERADE 94252190Srpaulo iptables -D FORWARD -i $UPLINK -o $GIFNAME -m state --state RELATED,ESTABLISHED -j ACCEPT 95252190Srpaulo iptables -D FORWARD -i $GIFNAME -o $UPLINK -j ACCEPT 96252190Srpaulofi 97