diff --git a/mininet/net.py b/mininet/net.py
index fea14d4dc79269def84fe405ec922d0124fe3338..8f89babbab21c1b149a13e2271d833ddf286d67e 100755
--- a/mininet/net.py
+++ b/mininet/net.py
@@ -337,15 +337,18 @@ def addLink( self, node1, node2, port1=None, port2=None,
             cls: link class (optional)
             params: additional link params (optional)
             returns: link object"""
+        # Accept node objects or names
         node1 = node1 if type( node1 ) != str else self[ node1 ]
         node2 = node2 if type( node2 ) != str else self[ node2 ]
         options = dict( params )
-        options.setdefault( 'addr1', self.randMac() )
-        options.setdefault( 'addr2', self.randMac() )
+        # Port is optional
         if port1 is not None:
             options.setdefault( 'port1', port1 )
         if port2 is not None:
             options.setdefault( 'port2', port2 )
+        # Set default MAC - this should probably be in Link
+        options.setdefault( 'addr1', self.randMac() )
+        options.setdefault( 'addr2', self.randMac() )
         cls = self.link if cls is None else cls
         link = cls( node1, node2, **options )
         self.links.append( link )