Using latest version of mininet

refs: #2851

Change-Id: Ica4936cb98245a0b1a22d8ceada4e7a0f6dbddc8
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..ca86513
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,182 @@
+#!/bin/bash
+
+test -e /etc/debian_version && DIST="Debian"
+grep Ubuntu /etc/lsb-release &> /dev/null && DIST="Ubuntu"
+
+if [[ $DIST == Ubuntu || $DIST == Debian ]]; then
+    update='sudo apt-get update'
+    install='sudo apt-get -y install'
+    remove='sudo apt-get -y remove'
+    pkginst='sudo dpkg -i'
+    # Prereqs for this script
+    if ! which lsb_release &> /dev/null; then
+        $install lsb-release
+    fi
+fi
+
+test -e /etc/fedora-release && DIST="Fedora"
+if [[ $DIST == Fedora ]]; then
+    update='sudo yum update'
+    install='sudo yum -y install'
+    remove='sudo yum -y erase'
+    pkginst='sudo rpm -ivh'
+    # Prereqs for this script
+    if ! which lsb_release &> /dev/null; then
+        $install redhat-lsb-core
+    fi
+fi
+
+function forwarder {
+    if [[ $cxx != true ]]; then
+        ndncxx
+        cxx="true"
+    fi
+
+    if [[ $DIST == Ubuntu || $DIST == Debian ]]; then
+        $install libpcap-dev pkg-config
+    fi
+
+    if [[ $DIST == Fedora ]]; then
+        $install libpcap-devel
+    fi
+
+    git clone --depth 1 https://github.com/named-data/NFD
+    cd NFD
+    ./waf configure --without-websocket
+    ./waf
+    sudo ./waf install
+    cd ../
+}
+
+function routing {
+    if [[ $cxx != true ]]; then
+        ndncxx
+        cxx="true"
+    fi
+
+    if [[ $DIST == Ubuntu ]]; then
+        $install liblog4cxx10-dev libprotobuf-dev protobuf-compiler
+    fi
+
+    if [[ $DIST == Fedora ]]; then
+        $install log4cxx log4cxx-devel openssl-devel protobuf-devel
+    fi
+
+    git clone --depth 1 https://github.com/named-data/NLSR
+    cd NLSR
+    ./waf configure
+    ./waf
+    sudo ./waf install
+    cd ../
+}
+
+function ndncxx {
+    if [[ updated != true ]]; then
+        $update
+        updated="true"
+    fi
+
+    if [[ $DIST == Ubuntu || $DIST == Debian ]]; then
+        $install git libsqlite3-dev libboost-all-dev make g++
+        crypto
+    fi
+
+    if [[ $DIST == Fedora ]]; then
+        $install gcc-c++ sqlite-devel boost-devel
+    fi
+
+    git clone --depth 1 https://github.com/named-data/ndn-cxx
+    cd ndn-cxx
+    ./waf configure
+    ./waf
+    sudo ./waf install
+    cd ../
+}
+
+function crypto {
+    mkdir crypto
+    cd crypto
+    $install unzip
+    wget http://www.cryptopp.com/cryptopp562.zip
+    unzip cryptopp562.zip
+    make
+    sudo make install
+    cd ../
+}
+
+function tools {
+    if [[ $cxx != true ]]; then
+        ndncxx
+        cxx="true"
+    fi
+
+    git clone --depth 1 https://github.com/named-data/ndn-tools
+    cd ndn-tools
+    ./waf configure
+    ./waf
+    sudo ./waf install
+    cd ../
+}
+
+function mininet {
+    if [[ updated != true ]]; then
+        $update
+        updated="true"
+    fi
+
+    if [[ $pysetup != true ]]; then
+        pysetup="true"
+    fi
+
+    git clone --depth 1 https://github.com/mininet/mininet
+    cd mininet
+    sudo ./util/install.sh -fnv
+    cd ../
+}
+
+function minindn {
+    if [[ updated != true ]]; then
+        $update
+        updated="true"
+    fi
+
+    if [[ $pysetup != true ]]; then
+        $install python-setuptools
+        pysetup="true"
+    fi
+    sudo mkdir -p /usr/local/etc/mini-ndn/
+    sudo cp ndn_utils/client.conf.sample /usr/local/etc/mini-ndn/
+    sudo cp ndn_utils/nfd.conf /usr/local/etc/mini-ndn/
+    sudo cp ndn_utils/nlsr.conf /usr/local/etc/mini-ndn/
+    sudo python setup.py install
+}
+
+
+function usage {
+    printf '\nUsage: %s [-mfrti]\n\n' $(basename $0) >&2
+
+    printf 'options:\n' >&2
+    printf -- ' -f: install NFD\n' >&2
+    printf -- ' -i: install mini-ndn\n' >&2
+    printf -- ' -m: install mininet and dependencies\n' >&2
+    printf -- ' -r: install NLSR\n' >&2
+    printf -- ' -t: install tools\n' >&2
+    exit 2
+}
+
+if [[ $# -eq 0 ]]; then
+    usage
+else
+    while getopts 'mfrti' OPTION
+    do
+        case $OPTION in
+        f)    forwarder;;
+        i)    minindn;;
+        m)    mininet;;
+        r)    routing;;
+        t)    tools;;
+        ?)    usage;;
+        esac
+    done
+    shift $(($OPTIND - 1))
+fi