| #!/usr/bin/python |
| |
| """ |
| This example shows how to add an interface (for example a real |
| hardware interface) to a network after the network is created. |
| """ |
| |
| import re |
| |
| from mininet.cli import CLI |
| from mininet.log import setLogLevel, info, error |
| from mininet.net import Mininet |
| from mininet.link import Intf |
| from mininet.topolib import TreeTopo |
| from mininet.util import quietRun |
| |
| def checkIntf( intf ): |
| "Make sure intf exists and is not configured." |
| if ( ' %s:' % intf ) not in quietRun( 'ip link show' ): |
| error( 'Error:', intf, 'does not exist!\n' ) |
| exit( 1 ) |
| ips = re.findall( r'\d+\.\d+\.\d+\.\d+', quietRun( 'ifconfig ' + intf ) ) |
| if ips: |
| error( 'Error:', intf, 'has an IP address,' |
| 'and is probably in use!\n' ) |
| exit( 1 ) |
| |
| if __name__ == '__main__': |
| setLogLevel( 'info' ) |
| |
| intfName = 'eth1' |
| info( '*** Checking', intfName, '\n' ) |
| checkIntf( intfName ) |
| |
| info( '*** Creating network\n' ) |
| net = Mininet( topo=TreeTopo( depth=1, fanout=2 ) ) |
| |
| switch = net.switches[ 0 ] |
| info( '*** Adding hardware interface', intfName, 'to switch', |
| switch.name, '\n' ) |
| _intf = Intf( intfName, node=switch ) |
| |
| info( '*** Note: you may need to reconfigure the interfaces for ' |
| 'the Mininet hosts:\n', net.hosts, '\n' ) |
| |
| net.start() |
| CLI( net ) |
| net.stop() |