First commit
diff --git a/examples/controllers.py b/examples/controllers.py
new file mode 100644
index 0000000..6eeef0e
--- /dev/null
+++ b/examples/controllers.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+
+"""
+This example creates a multi-controller network from
+semi-scratch; note a topo object could also be used and
+would be passed into the Mininet() constructor.
+"""
+
+from mininet.net import Mininet
+from mininet.node import Controller, OVSKernelSwitch
+from mininet.cli import CLI
+from mininet.log import setLogLevel
+
+Switch = OVSKernelSwitch
+
+def addHost( net, N ):
+ "Create host hN and add to net."
+ name = 'h%d' % N
+ ip = '10.0.0.%d' % N
+ return net.addHost( name, ip=ip )
+
+def multiControllerNet():
+ "Create a network with multiple controllers."
+
+ net = Mininet( controller=Controller, switch=Switch)
+
+ print "*** Creating controllers"
+ c1 = net.addController( 'c1', port=6633 )
+ c2 = net.addController( 'c2', port=6634 )
+
+ print "*** Creating switches"
+ s1 = net.addSwitch( 's1' )
+ s2 = net.addSwitch( 's2' )
+
+ print "*** Creating hosts"
+ hosts1 = [ addHost( net, n ) for n in 3, 4 ]
+ hosts2 = [ addHost( net, n ) for n in 5, 6 ]
+
+ print "*** Creating links"
+ for h in hosts1:
+ s1.linkTo( h )
+ for h in hosts2:
+ s2.linkTo( h )
+ s1.linkTo( s2 )
+
+ print "*** Starting network"
+ net.build()
+ c1.start()
+ c2.start()
+ s1.start( [ c1 ] )
+ s2.start( [ c2 ] )
+
+ print "*** Testing network"
+ net.pingAll()
+
+ print "*** Running CLI"
+ CLI( net )
+
+ print "*** Stopping network"
+ net.stop()
+
+if __name__ == '__main__':
+ setLogLevel( 'info' ) # for CLI output
+ multiControllerNet()