# 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
###

## ONOS Cluster VM (has LXC containers for cluster nodes)
export OCVM=192.168.56.102

#============================================
# sdn@ocluster:~$ sudo lxc-ls --fancy
# NAME   STATE    IPV4        IPV6  AUTOSTART
# -------------------------------------------
# onos1  RUNNING  10.0.3.174  -     YES
# onos2  RUNNING  10.0.3.242  -     YES
# onos3  RUNNING  10.0.3.49   -     YES
# onos4  RUNNING  10.0.3.132  -     YES
#============================================

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

## ONOS instances (LXC containers)
export OC1=10.0.3.174
export OC2=10.0.3.242
export OC3=10.0.3.49

## keep this out of the initial cluster...
## export OC4=10.0.3.132

## default ONOS instance
export OCI=$OC1

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

## the apps we want activated at startup
export ONOS_APPS="drivers,openflow,proxyarp,drivermatrix"

## mininet VM
export OCN="192.168.56.103"

export ONOS_WEB_USER=onos
export ONOS_WEB_PASS=rocks
