Enable global port forwarding in root namespace

This should fix the problem seen in VirtualBox where you
may have some random interface which is host-only which needs
to have port forwarding set up on it.

Change-Id: Iacdbb129d52529783bdab1c3d768131f6eaf0364
diff --git a/tools/dev/mininet/onos.py b/tools/dev/mininet/onos.py
index 00e4a40..8e163ad 100755
--- a/tools/dev/mininet/onos.py
+++ b/tools/dev/mininet/onos.py
@@ -55,7 +55,6 @@
 from glob import glob
 import time
 from functools import partial
-from re import search
 
 
 ### ONOS Environment
@@ -365,7 +364,7 @@
         args = list( args )
         name = args.pop( 0 )
         topo = kwargs.pop( 'topo', None )
-        nat = kwargs.pop( 'nat', 'nat0' )
+        self.nat = kwargs.pop( 'nat', 'nat0' )
         nodeOpts = kwargs.pop( 'nodeOpts', {} )
         # Default: single switch with 1 ONOS node
         if not topo:
@@ -384,8 +383,8 @@
                             host=partial( ONOSNode, **nodeOpts ),
                             switch=LinuxBridge,
                             controller=None )
-        if nat:
-            self.net.addNAT( nat ).configDefault()
+        if self.nat:
+            self.net.addNAT( self.nat ).configDefault()
         updateNodeIPs( self.env, self.nodes() )
         self._remoteControllers = []
 
@@ -420,32 +419,21 @@
         "Return list of ONOS nodes"
         return [ h for h in self.net.hosts if isinstance( h, ONOSNode ) ]
 
-    def defaultIntf( self ):
-        "Call ip route to determine default interface"
-        result = quietRun( 'ip route | grep default', shell=True ).strip()
-        match = search( r'dev\s+([^\s]+)', result )
-        if match:
-            intf = match.group( 1 )
-        else:
-            warn( "Can't find default network interface - using eth0\n" )
-            intf = 'eth0'
-        return intf
-
-    def configPortForwarding( self, ports=[], intf='', action='A' ):
-        """Start or stop forwarding on intf to all nodes
+    def configPortForwarding( self, ports=[], action='A' ):
+        """Start or stop port forwarding (any intf) for all nodes
+           ports: list of ports to forward
            action: A=add/start, D=delete/stop (default: A)"""
-        if not intf:
-            intf = self.defaultIntf()
+        self.cmd( 'iptables -' + action, 'FORWARD -d', self.ipBase,
+                  '-j ACCEPT' )
         for port in ports:
             for index, node in enumerate( self.nodes() ):
                 ip, inport = node.IP(), port + index
                 # Configure a destination NAT rule
-                cmd = ( 'iptables -t nat -{action} PREROUTING -t nat '
-                        '-i {intf} -p tcp --dport {inport} '
-                        '-j DNAT --to-destination {ip}:{port}' )
-                self.cmd( cmd.format( **locals() ) )
+                self.cmd( 'iptables -t nat -' + action,
+                          'PREROUTING -t nat -p tcp --dport', inport,
+                          '-j DNAT --to-destination %s:%s' % ( ip, port ) )
 
-
+                    
 class ONOSSwitchMixin( object ):
     "Mixin for switches that connect to an ONOSCluster"
     def start( self, controllers ):