diff --git a/mininet/net.py b/mininet/net.py index 5b16ce0c2e19ed5c0ccc4f9d536fd98d27de0446..0102a2e6d561e81320d011fadb539018f9c34de1 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -324,33 +324,26 @@ def items( self ): @staticmethod def randMac(): "Return a random, non-multicast MAC address" - return macColonHex( random.randint(1, 2**48 - 1) & 0xfeffffffffff | 0x020000000000 ) + return macColonHex( random.randint(1, 2**48 - 1) & 0xfeffffffffff | + 0x020000000000 ) def addLink( self, node1, node2, port1=None, port2=None, - cls=None, paramDict=None, **params ): + cls=None, **params ): """"Add a link from node1 to node2 - node1: source node - node2: dest node + node1: source node (or name) + node2: dest node (or name) port1: source port (optional) port2: dest port (optional) cls: link class (optional) - paramDict: dictionary of additional link params (optional) params: additional link params (optional) returns: link object""" - # Ugly: try to ensure that node1 and node2 line up correctly with - # other link parameters, and allow either nodes or names - paramDict = {} if paramDict is None else dict( paramDict ) - paramDict.update( params ) - node1 = paramDict.pop( 'node1', node1 ) - node2 = paramDict.pop( 'node2', node1 ) node1 = node1 if type( node1 ) != str else self[ node1 ] node2 = node2 if type( node2 ) != str else self[ node2 ] - paramDict.setdefault( 'port1', port1 ) - paramDict.setdefault( 'port2', port2 ) - paramDict.setdefault( 'addr1', self.randMac() ) - paramDict.setdefault( 'addr2', self.randMac() ) + options = dict( params ) + options.setdefault( 'addr1', self.randMac() ) + options.setdefault( 'addr2', self.randMac() ) cls = self.link if cls is None else cls - link = cls( node1, node2, **paramDict ) + link = cls( node1, node2, **options ) self.links.append( link ) return link @@ -410,7 +403,7 @@ def buildFromTopo( self, topo=None ): info( '\n*** Adding links:\n' ) for srcName, dstName, params in topo.links( sort=True, withInfo=True ): - self.addLink( srcName, dstName, paramDict=params ) + self.addLink( **params ) info( '(%s, %s) ' % ( srcName, dstName ) ) info( '\n' )