22
33from mininet .topo import Topo
44from mininet .net import Mininet
5- from mininet .node import OVSController
5+ from mininet .node import OVSController , Node
66from mininet .cli import CLI
77from mininet .link import TCLink
88from mininet .log import setLogLevel
99from mininet .nodelib import LinuxBridge
1010
1111
12+ class Router (Node ):
13+ def config (self , ** params ):
14+ super (Router , self ).config (** params )
15+ if 'routes' in params :
16+ for (ip , gateway ) in params ['routes' ]:
17+ self .cmd ('ip route add {} via {}' .format (ip , gateway ))
18+ self .cmd ('sysctl net.ipv4.ip_forward=1' )
19+
20+ def terminate (self ):
21+ self .cmd ('sysctl net.ipv4.ip_forward=0' )
22+ super (Router , self ).terminate ()
23+
24+
1225class LabTopology (Topo ):
1326 """Two hosts connected to a single switch."""
1427
@@ -24,12 +37,12 @@ def build(self):
2437 phone = self .addHost ("phone" , ip = "192.168.0.5/24" ,
2538 defaultRoute = "via 192.168.0.1" )
2639
27- cloud = self .addHost ("cloud" , ip = "10.10.0.32/16" ,
40+ cloud = self .addHost ("cloud" , cls = Router , ip = "10.10.0.32/16" ,
2841 defaultRoute = "via 10.10.0.1" )
2942 web = self .addHost ("web" , ip = "10.0.0.16/16" ,
3043 defaultRoute = "via 10.0.0.1" )
3144
32- internet = self .addHost ("internet" , ip = None ,
45+ internet = self .addHost ("internet" , cls = Router , ip = None ,
3346 defaultRoute = "via 192.168.10.2" )
3447 router = self .addHost ("router" , ip = None ,
3548 defaultRoute = "via 192.168.10.1" )
0 commit comments