Skip to content

Commit 5d39a64

Browse files
committed
Adding missing Router class
1 parent 1035ff6 commit 5d39a64

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

solution/topology.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,26 @@
22

33
from mininet.topo import Topo
44
from mininet.net import Mininet
5-
from mininet.node import OVSController
5+
from mininet.node import OVSController, Node
66
from mininet.cli import CLI
77
from mininet.link import TCLink
88
from mininet.log import setLogLevel
99
from 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+
1225
class 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")

topology.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
11
from mininet.topo import Topo
22
from mininet.net import Mininet
3-
from mininet.node import OVSController
3+
from mininet.node import OVSController, Node
44
from mininet.cli import CLI
55
from mininet.link import TCLink
66
from mininet.log import setLogLevel
77
from mininet.nodelib import LinuxBridge
88

99

10+
class Router(Node):
11+
def config(self, **params):
12+
super(Router, self).config(**params)
13+
if 'routes' in params:
14+
for (ip, gateway) in params['routes']:
15+
self.cmd('ip route add {} via {}'.format(ip, gateway))
16+
self.cmd('sysctl net.ipv4.ip_forward=1')
17+
18+
def terminate(self):
19+
self.cmd('sysctl net.ipv4.ip_forward=0')
20+
super(Router, self).terminate()
21+
22+
1023
class LabTopology(Topo):
1124
"""Two hosts connected to a single switch."""
1225

@@ -15,7 +28,7 @@ def build(self):
1528
s1 = self.addSwitch("s1")
1629

1730
# Create two hosts
18-
h1 = self.addHost("h1")
31+
h1 = self.addHost("h1", cls=Router)
1932
h2 = self.addHost("h2")
2033

2134
# Connect hosts to the switch

0 commit comments

Comments
 (0)