added some documentation
This commit is contained in:
+8
-3
@@ -42,6 +42,9 @@ class Intf( object ):
|
|||||||
self.link = link
|
self.link = link
|
||||||
self.mac = mac
|
self.mac = mac
|
||||||
self.ip, self.prefixLen = None, None
|
self.ip, self.prefixLen = None, None
|
||||||
|
|
||||||
|
# if interface is lo, we know the ip is 127.0.0.1.
|
||||||
|
# This saves an ifconfig command per node
|
||||||
if self.name == 'lo':
|
if self.name == 'lo':
|
||||||
self.ip = '127.0.0.1'
|
self.ip = '127.0.0.1'
|
||||||
# Add to node (and move ourselves if necessary )
|
# Add to node (and move ourselves if necessary )
|
||||||
@@ -94,10 +97,12 @@ class Intf( object ):
|
|||||||
self.mac = macs[ 0 ] if macs else None
|
self.mac = macs[ 0 ] if macs else None
|
||||||
return self.mac
|
return self.mac
|
||||||
|
|
||||||
|
# Instead of updating ip and mac separately,
|
||||||
|
# use one ifconfig call to do it simultaneously.
|
||||||
|
# This saves an ifconfig command, which improves performance.
|
||||||
|
|
||||||
def updateAddr( self ):
|
def updateAddr( self ):
|
||||||
"""Return IP address and MAC address based on ifconfig.
|
"Return IP address and MAC address based on ifconfig."
|
||||||
instead of updating ip and mac separately,
|
|
||||||
use one ifconfig call to do it simultaneously"""
|
|
||||||
ifconfig = self.ifconfig()
|
ifconfig = self.ifconfig()
|
||||||
ips = self._ipMatchRegex.findall( ifconfig )
|
ips = self._ipMatchRegex.findall( ifconfig )
|
||||||
macs = self._macMatchRegex.findall( ifconfig )
|
macs = self._macMatchRegex.findall( ifconfig )
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ class Mininet( object ):
|
|||||||
if topo and build:
|
if topo and build:
|
||||||
self.build()
|
self.build()
|
||||||
|
|
||||||
|
|
||||||
def waitConnected( self, timeout=None, delay=.5 ):
|
def waitConnected( self, timeout=None, delay=.5 ):
|
||||||
"""wait for each switch to connect to a controller,
|
"""wait for each switch to connect to a controller,
|
||||||
up to 5 seconds
|
up to 5 seconds
|
||||||
@@ -384,6 +385,7 @@ class Mininet( object ):
|
|||||||
srcPort, dstPort = topo.port( srcName, dstName )
|
srcPort, dstPort = topo.port( srcName, dstName )
|
||||||
self.addLink( src, dst, srcPort, dstPort, **params )
|
self.addLink( src, dst, srcPort, dstPort, **params )
|
||||||
info( '(%s, %s) ' % ( src.name, dst.name ) )
|
info( '(%s, %s) ' % ( src.name, dst.name ) )
|
||||||
|
|
||||||
info( '\n' )
|
info( '\n' )
|
||||||
|
|
||||||
def configureControlNetwork( self ):
|
def configureControlNetwork( self ):
|
||||||
|
|||||||
+2
-4
@@ -331,10 +331,7 @@ class Node( object ):
|
|||||||
# Shell requires a string, not a list!
|
# Shell requires a string, not a list!
|
||||||
if defaults.get( 'shell', False ):
|
if defaults.get( 'shell', False ):
|
||||||
cmd = ' '.join( cmd )
|
cmd = ' '.join( cmd )
|
||||||
old = signal.signal( signal.SIGINT, signal.SIG_IGN )
|
return Popen( cmd, **defaults )
|
||||||
popen = Popen( cmd, **defaults )
|
|
||||||
signal.signal( signal.SIGINT, old )
|
|
||||||
return popen
|
|
||||||
|
|
||||||
def pexec( self, *args, **kwargs ):
|
def pexec( self, *args, **kwargs ):
|
||||||
"""Execute a command using popen
|
"""Execute a command using popen
|
||||||
@@ -1198,6 +1195,7 @@ class IVSSwitch(Switch):
|
|||||||
args.append( self.opts )
|
args.append( self.opts )
|
||||||
|
|
||||||
logfile = '/tmp/ivs.%s.log' % self.name
|
logfile = '/tmp/ivs.%s.log' % self.name
|
||||||
|
|
||||||
self.cmd( 'ifconfig lo up' )
|
self.cmd( 'ifconfig lo up' )
|
||||||
self.cmd( ' '.join(args) + ' >' + logfile + ' 2>&1 </dev/null &' )
|
self.cmd( ' '.join(args) + ' >' + logfile + ' 2>&1 </dev/null &' )
|
||||||
|
|
||||||
|
|||||||
+2
-17
@@ -249,29 +249,14 @@ def _colonHex( val, bytecount ):
|
|||||||
chStr = ':'.join( pieces )
|
chStr = ':'.join( pieces )
|
||||||
return chStr
|
return chStr
|
||||||
|
|
||||||
def generateMac( self ):
|
|
||||||
newMac = True
|
|
||||||
while True:
|
|
||||||
macList = [ 0x00 ]
|
|
||||||
for i in xrange ( 0, 5 ):
|
|
||||||
macList.append( random.randint( 0x00, 0xff ) )
|
|
||||||
mac = ':'.join( map(lambda x: "%02x" % x, macList ) )
|
|
||||||
for node in self.switches + self.hosts:
|
|
||||||
for intf in node.ports:
|
|
||||||
if intf.mac == mac:
|
|
||||||
newMac = False
|
|
||||||
break
|
|
||||||
if newMac:
|
|
||||||
return mac
|
|
||||||
|
|
||||||
def macColonHex( mac ):
|
def macColonHex( mac ):
|
||||||
"""Generate MAC colon-hex string from unsigned int.
|
"""Generate MAC colon-hex string from unsigned int.
|
||||||
mac: MAC address as unsigned int
|
mac: MAC address as unsigned int
|
||||||
returns: macStr MAC colon-hex string"""
|
returns: macStr MAC colon-hex string"""
|
||||||
if mac < 2**24:
|
if mac < 2 ** 24:
|
||||||
return 'A4:23:05:' + _colonHex( mac, 3 )
|
return 'A4:23:05:' + _colonHex( mac, 3 )
|
||||||
else:
|
else:
|
||||||
return _colonHex( mac, 6 )
|
return 'A4:23:05:' + _colonHex( mac, 3 )
|
||||||
|
|
||||||
def ipStr( ip ):
|
def ipStr( ip ):
|
||||||
"""Generate IP address string from an unsigned int.
|
"""Generate IP address string from an unsigned int.
|
||||||
|
|||||||
Reference in New Issue
Block a user