diff --git a/mininet/net.py b/mininet/net.py index 41afd4c0a53581e45c661573f6076b45216cf8ae..0305e02303eed3f67733ec7ae959b96241d4151f 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -159,6 +159,8 @@ def _add_link(self, src, dst): make_veth_pair(src_intf, dst_intf) src_node.intfs.append(src_intf) dst_node.intfs.append(dst_intf) + src_node.ports[src_port] = src_intf + dst_node.ports[dst_port] = dst_intf #lg.info('\n') #lg.info('added intf %s to src node %x\n' % (src_intf, src)) #lg.info('added intf %s to dst node %x\n' % (dst_intf, dst)) diff --git a/mininet/node.py b/mininet/node.py index f29acb5f94c3cfdb0ad1966b392fc448afc1de7c..ca1f4f96b1164315b2f6b3155d1eb25ddc4d35fd 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -41,6 +41,8 @@ def __init__(self, name, inNamespace = True): self.connection = {} self.waiting = False self.execed = False + self.ports = {} # dict of ints to interface strings + # replace with Port object, eventually def fdToNode(self, f): '''Insert docstring. @@ -316,8 +318,12 @@ def start(self, controllers): intf = 'of%i' % self.dp mac_str = macColonHex(self.dpid) self.cmd(['ifconfig', intf, 'hw', 'ether', mac_str]) - self.cmdPrint('dpctl addif nl:' + str(self.dp) + ' ' + - ' '.join(self.intfs)) + + if len(self.ports) != max(self.ports.keys()) + 1: + raise Exception('only contiguous, zero-indexed port ranges' + 'supported: %s' % self.ports) + intfs = [self.ports[port] for port in self.ports.keys()] + self.cmdPrint('dpctl addif nl:' + str(self.dp) + ' ' + ' '.join(intfs)) # Run protocol daemon self.cmdPrint('ofprotocol nl:' + str(self.dp) + ' tcp:' + controllers['c0'].IP() + ':' +