Basic topo to test new VPLS

Change-Id: Ie6b6f0ab431850e58dc8741f94c98f06b2243e2c
diff --git a/tools/test/topos/vpls.py b/tools/test/topos/vpls.py
new file mode 100755
index 0000000..0124541
--- /dev/null
+++ b/tools/test/topos/vpls.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+
+from mininet.cli import CLI
+from mininet.node import Link, Host
+from mininet.net import Mininet
+from mininet.node import RemoteController
+from mininet.term import makeTerm
+from mininet.topo import Topo
+from functools import partial
+
+class VLANHost( Host ):
+    "Host connected to VLAN interface"
+
+    def config( self, vlan=100, **params ):
+        """Configure VLANHost according to (optional) parameters:
+           vlan: VLAN ID for default interface"""
+
+        r = super( VLANHost, self ).config( **params )
+
+        intf = self.defaultIntf()
+        # remove IP from default, "physical" interface
+        self.cmd( 'ifconfig %s inet 0' % intf )
+        # create VLAN interface
+        self.cmd( 'vconfig add %s %d' % ( intf, vlan ) )
+        # assign the host's IP to the VLAN interface
+        self.cmd( 'ifconfig %s.%d inet %s' % ( intf, vlan, params['ip'] ) )
+        # update the intf name and host's intf map
+        newName = '%s.%d' % ( intf, vlan )
+        # update the (Mininet) interface to refer to VLAN interface name
+        intf.name = newName
+        # add VLAN interface to host's name to intf map
+        self.nameToIntf[ newName ] = intf
+
+        return r
+
+class VplsTopo(Topo):
+    ''' VPLS demo Topology '''
+
+    def __init__(self):
+        Topo.__init__(self)
+
+        s1 = self.addSwitch('s1')
+        s2 = self.addSwitch('s2')
+        s3 = self.addSwitch('s3')
+        s4 = self.addSwitch('s4')
+
+        v100h1 = self.addHost('v100h1', cls=VLANHost, vlan=100, mac='00:00:00:00:00:01')
+        v200h1 = self.addHost('v200h1', cls=VLANHost, vlan=200, mac='00:00:00:00:00:02')
+        v300h1 = self.addHost('v300h1', cls=VLANHost, vlan=300, mac='00:00:00:00:00:03')
+        v400h1 = self.addHost('v400h1', cls=VLANHost, vlan=400, mac='00:00:00:00:00:04')
+
+        self.addLink(s1, v100h1, port1=1, port2=0)
+        self.addLink(s2, v200h1, port1=1, port2=0)
+        self.addLink(s3, v300h1, port1=1, port2=0)
+        self.addLink(s4, v400h1, port1=1, port2=0)
+
+        self.addLink(s1, s4)
+        self.addLink(s1, s2)
+        self.addLink(s2, s4)
+        self.addLink(s2, s3)
+        self.addLink(s3, s4)
+
+topos = { 'vpls': ( lambda: VplsTopo() ) }
+
+if __name__ == '__main__':
+    from onosnet import run
+    run(VplsTopo())