#!/bin/bash

# Print some usage info
function usage {
  echo "Usage: $0 [OPTION] [host_ip]"
  echo "Set up temporary networking for LXC"
  echo ""
  echo "  -n, --dry-run            Just print the commands that would execute."
  echo "  -h, --help               Print this usage message."
  echo ""
  exit
}

# Allow passing the ip address on the command line.
function process_option {
  case "$1" in
    -h|--help) usage;;
    -n|--dry-run) dry_run=1;;
    *) host_ip="$1"
  esac
}

# Set up some defaults
host_ip=
dry_run=0
bridge=br0
DRIER=

# Process the args
for arg in "$@"; do
  process_option $arg
done

if [ $dry_run ]; then
  DRIER=echo
fi

if [ "$UID" -ne "0" ]; then
  echo "This script must be run with root privileges."
  exit 1
fi

# Check for bridge-utils.
BRCTL=`which brctl`
if [ ! -x "$BRCTL" ]; then
  echo "This script requires you to install bridge-utils."
  echo "Try: sudo apt-get install bridge-utils."
  exit 1
fi

# Scare off the nubs.
echo "====================================================="
echo
echo "WARNING"
echo
echo "This script will modify your current network setup,"
echo "this can be a scary thing and it is recommended that"
echo "you have something equivalent to physical access to"
echo "this machine before continuing in case your network"
echo "gets all funky."
echo
echo "If you don't want to continue, hit CTRL-C now."

if [ -z "$host_ip" ];
then
  echo "Otherwise, please type in your host's ip address and"
  echo "hit enter."
  echo
  echo "====================================================="
  read host_ip
else
  echo "Otherwise hit enter."
  echo
  echo "====================================================="
  read accept
fi


# Add a bridge interface, this will choke if there is already
# a bridge named $bridge
$DRIER $BRCTL addbr $bridge
$DRIER ip addr add 192.168.1.1/24 dev $bridge
if [ $dry_run ]; then
  echo "echo 1 > /proc/sys/net/ipv4/ip_forward"
else
  echo 1 > /proc/sys/net/ipv4/ip_forward
fi
$DRIER ifconfig $bridge up

# Set up the NAT for the instances
$DRIER iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source $host_ip
$DRIER iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT