From 8a987b9c55e056b8066c8837d8c48de8e2eef6c8 Mon Sep 17 00:00:00 2001
From: Brian O'Connor <bocon@onlab.us>
Date: Wed, 27 Aug 2014 03:57:38 -0700
Subject: [PATCH] adding linuxrouter.py

---
 examples/linuxrouter.py | 49 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100755 examples/linuxrouter.py

diff --git a/examples/linuxrouter.py b/examples/linuxrouter.py
new file mode 100755
index 00000000..1d625ba7
--- /dev/null
+++ b/examples/linuxrouter.py
@@ -0,0 +1,49 @@
+#!/usr/bin/python
+
+"""
+linuxrouter.py: Example network with Linux IP router
+ 
+
+"""
+
+from mininet.topo import Topo
+from mininet.net import Mininet
+from mininet.node import Node
+from mininet.log import setLogLevel
+from mininet.cli import CLI
+from mininet.util import irange
+
+class Router( Node ):
+
+    def config( self, **params ):
+        super( Router, self).config( **params )
+        # Enable forwarding on the router
+        self.cmd( 'sysctl net.ipv4.ip_forward=1' )
+
+    def terminate( self ):
+        self.cmd( 'sysctl net.ipv4.ip_forward=0' )
+        super( Router, self ).terminate()
+
+
+class NetworkTopo(Topo):
+    def __init__(self, n=2, h=1, **opts):
+        Topo.__init__(self, **opts)
+
+        router = self.addNode('r0', cls=Router, ip='192.168.1.1/24')
+        h1 = self.addHost('h1', ip='192.168.1.100/8', defaultRoute='via 192.168.1.1')
+        h2 = self.addHost('h2', ip='172.16.0.100/8', defaultRoute='via 172.16.0.1')
+        h3 = self.addHost('h3', ip='10.0.0.100/24', defaultRoute='via 10.0.0.1')
+        self.addLink(h1, router, intfName2='r0-eth1', params2={ 'ip' : '192.168.1.1/24' })
+        self.addLink(h2, router, intfName2='r0-eth2', params2={ 'ip' : '172.16.0.1/24' })
+        self.addLink(h3, router, intfName2='r0-eth3', params2={ 'ip' : '10.0.0.1/24' })
+
+def run():
+    topo = NetworkTopo()
+    net = Mininet(topo=topo)
+    net.start()
+    CLI(net)
+    net.stop()
+
+if __name__ == '__main__':
+    setLogLevel('info')
+    run()
-- 
GitLab