diff --git a/mininet/node.py b/mininet/node.py index 0a713acb3cb27ed770d83f91d0d83120ec035912..ad94ad6f6b1c9449232330062590845448095e1f 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -50,7 +50,7 @@ from mininet.log import info, error, debug from mininet.util import quietRun, makeIntfPair, moveIntf, isShellBuiltin -from mininet.moduledeps import moduleDeps, OVS_KMOD, OF_KMOD, TUN +from mininet.moduledeps import moduleDeps, pathCheck, OVS_KMOD, OF_KMOD, TUN SWITCH_PORT_BASE = 1 # For OF > 0.9, switch ports start at 1 rather than zero @@ -455,11 +455,12 @@ def __init__( self, name, **kwargs ): """Init. name: name for the switch""" Switch.__init__( self, name, **kwargs ) + pathCheck( 'ofdatapath', 'ofprotocol' ) @staticmethod def setup(): "Ensure any dependencies are loaded; if not, try to load them." - moduleDeps( add = TUN ) + moduleDeps( add=TUN ) def start( self, controllers ): """Start OpenFlow reference user datapath. @@ -511,6 +512,7 @@ def __init__( self, name, dp=None, **kwargs ): def setup(): "Ensure any dependencies are loaded; if not, try to load them." moduleDeps( subtract = OVS_KMOD, add = OF_KMOD ) + pathCheck( 'ofprotocol' ) def start( self, controllers ): "Start up reference kernel datapath." @@ -523,7 +525,7 @@ def start( self, controllers ): if self.defaultMAC: self.cmd( 'ifconfig', self.intf, 'hw', 'ether', self.defaultMAC ) ports = sorted( self.ports.values() ) - if len( ports ) != ports[ -1 ] + 1: + if len( ports ) != ports[ -1 ] + 1 - self.portBase: raise Exception( 'only contiguous, zero-indexed port ranges' 'supported: %s' % ports ) intfs = [ self.intfs[ port ] for port in ports ] @@ -564,6 +566,7 @@ def __init__( self, name, dp=None, **kwargs ): def setup(): "Ensure any dependencies are loaded; if not, try to load them." moduleDeps( subtract = OF_KMOD, add = OVS_KMOD ) + pathCheck( 'ovs-dpctl', 'ovs-openflowd' ) def start( self, controllers ): "Start up kernel datapath." @@ -580,7 +583,7 @@ def start( self, controllers ): mac_str = ' --datapath-id=0000' + \ ''.join( self.defaultMAC.split( ':' ) ) + ' ' ports = sorted( self.ports.values() ) - if len( ports ) != ports[ -1 ]: + if len( ports ) != ports[ -1 ] + 1 - self.portBase: raise Exception( 'only contiguous, one-indexed port ranges ' 'supported: %s' % self.intfs ) intfs = [ self.intfs[ port ] for port in ports ] @@ -617,6 +620,7 @@ def __init__( self, name, inNamespace=False, controller='controller', def start( self ): """Start <controller> <args> on controller. Log to /tmp/cN.log""" + pathCheck( self.controller ) cout = '/tmp/' + self.name + '.log' if self.cdir is not None: self.cmd( 'cd ' + self.cdir )