Add nodelib.py, a library of new node types
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
"""
|
||||||
|
Package: nodelib
|
||||||
|
|
||||||
|
Node Library for Mininet
|
||||||
|
|
||||||
|
This contains additional node types which you may find to be useful
|
||||||
|
"""
|
||||||
|
|
||||||
|
from mininet.net import Mininet
|
||||||
|
from mininet.topo import Topo
|
||||||
|
from mininet.node import Switch
|
||||||
|
from mininet.log import setLogLevel, info
|
||||||
|
|
||||||
|
class LinuxBridge( Switch ):
|
||||||
|
"Linux Bridge (with optional spanning tree)"
|
||||||
|
|
||||||
|
nextPrio = 100 # next bridge priority for spanning tree
|
||||||
|
|
||||||
|
def __init__( self, name, stp=False, prio=None, **kwargs ):
|
||||||
|
"""stp: use spanning tree protocol? (default False)
|
||||||
|
prio: optional explicit bridge priority for STP"""
|
||||||
|
self.stp = stp
|
||||||
|
if prio:
|
||||||
|
self.prio = prio
|
||||||
|
else:
|
||||||
|
self.prio = LinuxBridge.nextPrio
|
||||||
|
LinuxBridge.nextPrio += 1
|
||||||
|
Switch.__init__( self, name, **kwargs )
|
||||||
|
|
||||||
|
def start( self, controllers ):
|
||||||
|
self.cmd( 'ifconfig', self, 'down' )
|
||||||
|
self.cmd( 'brctl delbr', self )
|
||||||
|
self.cmd( 'brctl addbr', self )
|
||||||
|
if self.stp:
|
||||||
|
self.cmd( 'brctl setbridgeprio', self.prio )
|
||||||
|
self.cmd( 'brctl stp', self, 'on' )
|
||||||
|
for i in self.intfList():
|
||||||
|
if self.name in i.name:
|
||||||
|
self.cmd( 'brctl addif', self, i )
|
||||||
|
self.cmd( 'ifconfig', self, 'up' )
|
||||||
|
|
||||||
|
def stop( self ):
|
||||||
|
self.cmd( 'ifconfig', self, 'down' )
|
||||||
|
self.cmd( 'brctl delbr', self )
|
||||||
|
|
||||||
Reference in New Issue
Block a user