Change to allow addLink() without specifying ports.

This commit is contained in:
Bob Lantz
2012-03-23 18:36:13 -07:00
parent 44af37bc2b
commit e8146dd130
+20 -9
View File
@@ -95,7 +95,7 @@ from time import sleep
from mininet.cli import CLI from mininet.cli import CLI
from mininet.log import info, error, debug, output from mininet.log import info, error, debug, output
from mininet.node import Host, OVSKernelSwitch, Controller from mininet.node import Host, OVSKernelSwitch, Controller
from mininet.link import Link from mininet.link import Link, Intf
from mininet.util import quietRun, fixLimits from mininet.util import quietRun, fixLimits
from mininet.util import macColonHex, ipStr, ipParse, netParse, ipAdd from mininet.util import macColonHex, ipStr, ipParse, netParse, ipAdd
from mininet.term import cleanUpScreens, makeTerms from mininet.term import cleanUpScreens, makeTerms
@@ -104,7 +104,7 @@ class Mininet( object ):
"Network emulation with hosts spawned in network namespaces." "Network emulation with hosts spawned in network namespaces."
def __init__( self, topo=None, switch=OVSKernelSwitch, host=Host, def __init__( self, topo=None, switch=OVSKernelSwitch, host=Host,
controller=Controller, link=Link, intf=None, controller=Controller, link=Link, intf=Intf,
build=True, xterms=False, cleanup=False, ipBase='10.0.0.0/8', build=True, xterms=False, cleanup=False, ipBase='10.0.0.0/8',
inNamespace=False, inNamespace=False,
autoSetMacs=False, autoStaticArp=False, listenPort=None ): autoSetMacs=False, autoStaticArp=False, listenPort=None ):
@@ -210,14 +210,21 @@ class Mininet( object ):
"Return node with given name" "Return node with given name"
return self.nameToNode[ nodeName ] return self.nameToNode[ nodeName ]
def addLink( self, src, dst, srcPort=None, dstPort=None, def addLink( self, node1, node2, port1=None, port2=None,
cls=None, **params ): cls=None, **params ):
"Add a link from topo" """"Add a link from node1 to node2
if self.intf and not 'intf' in params: node1: source node
params[ 'intf' ] = self.intf node2: dest node
port1: source port
port2: dest port
returns: link object"""
defaults = { 'port1': port1,
'port2': port2,
'intf': self.intf }
defaults.update( params )
if not cls: if not cls:
cls = self.link cls = self.link
return cls( src, dst, srcPort, dstPort, **params ) return cls( node1, node2, **defaults )
def configHosts( self ): def configHosts( self ):
"Configure a set of hosts." "Configure a set of hosts."
@@ -260,9 +267,13 @@ class Mininet( object ):
info( '\n*** Adding links:\n' ) info( '\n*** Adding links:\n' )
for srcName, dstName in topo.links(sort=True): for srcName, dstName in topo.links(sort=True):
src, dst = self.nameToNode[ srcName ], self.nameToNode[ dstName ] src, dst = self.nameToNode[ srcName ], self.nameToNode[ dstName ]
params = topo.linkInfo( srcName, dstName )
srcPort, dstPort = topo.port( srcName, dstName ) srcPort, dstPort = topo.port( srcName, dstName )
self.addLink( src, dst, srcPort, dstPort, if not params:
**topo.linkInfo( srcName, dstName ) ) params = {}
params.setdefault( 'port1', srcPort)
params.setdefault( 'port2', dstPort)
self.addLink( src, dst, **params )
info( '(%s, %s) ' % ( src.name, dst.name ) ) info( '(%s, %s) ' % ( src.name, dst.name ) )
info( '\n' ) info( '\n' )