#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, OVSKernelSwitch, RemoteController
from mininet.cli import CLI
from mininet.log import setLogLevel, info

def emptyNet():

   net = Mininet(controller=RemoteController, switch=OVSKernelSwitch)

   c1 = net.addController('c1', controller=RemoteController, ip="127.0.0.1")
   c2 = net.addController('c2', controller=RemoteController, ip="127.0.0.2")

   h1 = net.addHost( 'h1', ip='10.0.0.1', mac='00:00:00:00:00:01')
   h2 = net.addHost( 'h2', ip='10.0.0.2', mac='00:00:00:00:00:02')
   h3 = net.addHost( 'h3', ip='10.0.0.3', mac='00:00:00:00:00:03')
   h4 = net.addHost( 'h4', ip='10.0.0.4', mac='00:00:00:00:00:04')
   h5 = net.addHost( 'h5', ip='10.0.0.5', mac='00:00:00:00:00:05')
   h6 = net.addHost( 'h6', ip='10.0.0.6', mac='00:00:00:00:00:06')

   s1 = net.addSwitch( 's1', dpid='0000000000000100')
   s2 = net.addSwitch( 's2', dpid='0000000000000101')
   s3 = net.addSwitch( 's3', dpid='0000000000000102')
   s4 = net.addSwitch( 's4', dpid='0000000000000103')

   s1.linkTo( h1 )
   s1.linkTo( h2 )
   s1.linkTo( s2 )
   s2.linkTo( h3 )
   s2.linkTo( h4 )
   s2.linkTo( s3 )
   s3.linkTo( h5 )
   s3.linkTo( h6 )
   s3.linkTo( s4 )
   #c1.linkTo(c2)
   

   net.build()
   c1.start()
   c2.start()
   s1.start([c1])
   s2.start([c1])
   s3.start([c1])
   s4.start([c2])

   #net.start()
   net.staticArp()
   CLI( net )
   net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    emptyNet()