Skip to content
Snippets Groups Projects
Commit d856c818 authored by Brandon Heller's avatar Brandon Heller
Browse files

Support out-of-order link addition

Sort interface names before passing to dpctl for kernel switch, so that
links for multipath topologies can be added in any order.
parent 6d2cd77b
No related branches found
No related tags found
No related merge requests found
......@@ -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))
......
......@@ -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() + ':' +
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment