#!/bin/bash

function mac_to_iface {
    MAC=$1
    ifconfig|grep $MAC| awk '{print $1}'|grep -v '\.'
}

iptables -L > /dev/null
ip6tables -L > /dev/null

STAG={{ s_tags[0] }}
CTAG={{ c_tags[0] }}
VCPE=vcpe-$STAG-$CTAG

docker inspect $VCPE > /dev/null 2>&1
if [ "$?" == 1 ]
then
    docker pull andybavier/docker-vcpe
    docker run -d --name=$VCPE --privileged=true --net=none \
    -v /var/container_volumes/$VCPE/mount:/mount:ro \
    -v /var/container_volumes/$VCPE/etc/dnsmasq.d:/etc/dnsmasq.d:ro \
    -v /var/container_volumes/$VCPE/etc/service/message:/etc/service/message \
    -v /var/container_volumes/$VCPE/usr/local/sbin:/usr/local/sbin:ro \
    andybavier/docker-vcpe
else
    docker start $VCPE
fi

# Set up networking via pipework
WAN_IFACE=br-wan
docker exec $VCPE ifconfig eth0 >> /dev/null || pipework $WAN_IFACE -i eth0 $VCPE {{ wan_container_ip }}/{{ wan_container_netbits }}@{{ wan_container_gateway_ip }} {{ wan_container_mac }}

LAN_IFACE=eth0
ifconfig $LAN_IFACE >> /dev/null
if [ "$?" == 0 ]
then
    ifconfig $LAN_IFACE.$STAG >> /dev/null || ip link add link $LAN_IFACE name $LAN_IFACE.$STAG type vlan id $STAG
    ifconfig $LAN_IFACE.$STAG up
    docker exec $VCPE ifconfig eth1 >> /dev/null || pipework $LAN_IFACE.$STAG -i eth1 $VCPE 192.168.0.1/24 @$CTAG
fi

#HPC_IFACE=$( mac_to_iface {{ hpc_client_mac }} )
#docker exec $VCPE ifconfig eth2 >> /dev/null || pipework $HPC_IFACE -i eth2 $VCPE {{ hpc_client_ip }}/24

# Make sure VM's eth0 (hpc_client) has no IP address
#ifconfig $HPC_IFACE 0.0.0.0

# Attach to container
docker start -a $VCPE
