diff --git a/mininet/cli.py b/mininet/cli.py index dc531c1433aff4fe504d3a0185905aa5e4a075fb..a2c6ff1cffdfbcb998819a9955a9ba13cda604f8 100644 --- a/mininet/cli.py +++ b/mininet/cli.py @@ -36,7 +36,8 @@ from mininet.log import info, output, error from mininet.term import makeTerms, runX11 -from mininet.util import quietRun, isShellBuiltin, dumpNodeConnections +from mininet.util import ( quietRun, isShellBuiltin, dumpNodeConnections, + dumpPorts ) class CLI( Cmd ): "Simple command-line interface to talk to nodes." @@ -127,6 +128,10 @@ def do_nodes( self, _line ): nodes = ' '.join( sorted( self.mn ) ) output( 'available nodes are: \n%s\n' % nodes ) + def do_ports( self, line ): + "display ports and interfaces for each switch" + dumpPorts( self.mn.switches ) + def do_net( self, _line ): "List network connections." dumpNodeConnections( self.mn.values() ) diff --git a/mininet/util.py b/mininet/util.py index 3ebe6a2fd1db0c6ae38f17f5976bd2ecaa628030..3dbbea6c758cb80ce5c0268b91e74efafd7c41a1 100644 --- a/mininet/util.py +++ b/mininet/util.py @@ -234,6 +234,15 @@ def dumpNetConnections( net ): nodes = net.controllers + net.switches + net.hosts dumpNodeConnections( nodes ) +def dumpPorts( switches ): + "dump interface to openflow port mappings for each switch" + for switch in switches: + output( '%s ' % switch.name ) + for intf in switch.intfList(): + port = switch.ports[ intf ] + output( '%s:%d ' % ( intf, port ) ) + output( '\n' ) + # IP and Mac address formatting and parsing def _colonHex( val, bytecount ):