# HG changeset patch # User Paul Boddie # Date 1367343719 -7200 # Node ID de10f57af91deba3f6c965cf6318b2fe02e1aaeb # Parent 8190cadff984ef84990e1a10f009d6f1c1780dd8 Added error handling when setting up network tunnelling. diff -r 8190cadff984 -r de10f57af91d uml-net --- a/uml-net Tue Apr 30 17:52:07 2013 +0200 +++ b/uml-net Tue Apr 30 19:41:59 2013 +0200 @@ -28,21 +28,33 @@ PROGNAME=`basename "$0"` -if [ "$1" = "--start" ]; then - chgrp adm /dev/net/tun - tunctl -u "$2" -t "$TUNDEVICE" - ifconfig "$TUNDEVICE" "$HOSTADDRESS" up - bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward" +OPERATION=$1 +USER=$2 + +if [ "$OPERATION" = "--start" ] && [ "$USER" ]; then + if ! chgrp adm /dev/net/tun ; then + echo "Cannot change group permission on tunnel device." 1>&2 + exit 1 + fi + if ! tunctl -u "$USER" -t "$TUNDEVICE" ; then + echo "Cannot configure a tunnel device for user $USER." 1>&2 + exit 1 + fi + if ! ifconfig "$TUNDEVICE" "$HOSTADDRESS" up ; then + echo "Could not start the tunnel device." 1>&2 + exit 1 + fi + sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" iptables -t nat -I POSTROUTING -o "$NETDEVICE" -j MASQUERADE iptables -I FORWARD -i "$TUNDEVICE" -j ACCEPT iptables -I FORWARD -o "$TUNDEVICE" -j ACCEPT -elif [ "$1" = "--stop" ]; then +elif [ "$OPERATION" = "--stop" ]; then iptables -t nat -D POSTROUTING 1 iptables -D FORWARD 1 iptables -D FORWARD 1 tunctl -d "$TUNDEVICE" else - echo "Usage: $PROGNAME --start | --stop" 1>&2 - exit 1 + echo "Usage: $PROGNAME --start | --stop" 1>&2 + exit 1 fi