# Simon's LXC-based multi ONOS instances & ONOS mininet VM.

###
###  NOTE:
###        Assumes a route has been set up
###         from 192.168.56.0/24 -> 10.0.3.0/24
###
###                    {dest-net}  {gateway}  (i.e. container VM)
###  sudo route -n add 10.0.3.0/24 192.168.56.102
###

## Use this command on VM to see IP addresses of instances:
##   sudo lxc-ls --fancy

export ONOS_USE_SSH=true
export ONOS_NIC="10.0.3.*"


#============================================
# sdn@ubuntuvm:~$ sudo lxc-ls --fancy
# NAME   STATE    IPV4        IPV6  AUTOSTART
# -------------------------------------------
# onos1  RUNNING  10.0.3.174  -     NO
#============================================


## ONOS instances (LXC containers)
export OC1=10.0.3.174
# TODO: clone OC1
#export OC2=10.0.3.78
#export OC3=10.0.3.195
#export OC4=10.0.3.126

## default ONOS instance
export OCI=$OC1

## credentials for logging into ONOS instances
export ONOS_USER=sdn

export ONOS_APPS="drivers,openflow,proxyarp,fwd"

## mininet VM
export OCN="192.168.56.103"

export ONOS_WEB_USER=onos
export ONOS_WEB_PASS=rocks
