"""Custom topology example author: Brandon Heller (brandonh@stanford.edu) Two directly connected switches plus a host for each switch: host --- switch --- switch --- host Adding the 'topos' dict with a key/value pair to generate our newly defined topology enables one to pass in '--topo=mytopo' from the command line. """ from mininet.topo import Topo, Node class MyTopo( Topo ): """Simple topology example.""" def __init__( self, enable_all = True ): """Create custom topo.""" # Add default members to class. super( MyTopo, self ).__init__() # Set Node IDs for hosts and switches leftHost = 1 leftSwitch = 2 rightSwitch = 3 rightHost = 4 # Add nodes self._add_node( leftSwitch, Node( is_switch=True ) ) self._add_node( rightSwitch, Node( is_switch=True ) ) self._add_node( leftHost, Node( is_switch=False ) ) self._add_node( rightHost, Node( is_switch=False ) ) # Add edges self._add_edge( leftHost, leftSwitch ) self._add_edge( leftSwitch, rightSwitch ) self._add_edge( rightSwitch, rightHost ) # Consider all switches and hosts 'on' self.enable_all() topos = { 'mytopo': ( lambda: MyTopo() ) }