First commit
diff --git a/mininet/topolib.py b/mininet/topolib.py
new file mode 100644
index 0000000..63ba36d
--- /dev/null
+++ b/mininet/topolib.py
@@ -0,0 +1,36 @@
+"Library of potentially useful topologies for Mininet"
+
+from mininet.topo import Topo
+from mininet.net import Mininet
+
+class TreeTopo( Topo ):
+ "Topology for a tree network with a given depth and fanout."
+
+ def __init__( self, depth=1, fanout=2 ):
+ super( TreeTopo, self ).__init__()
+ # Numbering: h1..N, s1..M
+ self.hostNum = 1
+ self.switchNum = 1
+ # Build topology
+ self.addTree( depth, fanout )
+
+ def addTree( self, depth, fanout ):
+ """Add a subtree starting with node n.
+ returns: last node added"""
+ isSwitch = depth > 0
+ if isSwitch:
+ node = self.addSwitch( 's%s' % self.switchNum )
+ self.switchNum += 1
+ for _ in range( fanout ):
+ child = self.addTree( depth - 1, fanout )
+ self.addLink( node, child )
+ else:
+ node = self.addHost( 'h%s' % self.hostNum )
+ self.hostNum += 1
+ return node
+
+
+def TreeNet( depth=1, fanout=2, **kwargs ):
+ "Convenience function for creating tree networks."
+ topo = TreeTopo( depth, fanout )
+ return Mininet( topo, **kwargs )