From dd21df3ce4b356695dc339c792877ee19abf986c Mon Sep 17 00:00:00 2001 From: Bob Lantz Date: Mon, 17 Jun 2013 17:09:54 -0700 Subject: [PATCH] Don't flush ALL routes and enable OPTIONAL default route/gw fixes #152 hopefully --- mininet/net.py | 2 +- mininet/node.py | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/mininet/net.py b/mininet/net.py index 161af5e..d056843 100755 --- a/mininet/net.py +++ b/mininet/net.py @@ -260,7 +260,7 @@ class Mininet( object ): info( host.name + ' ' ) intf = host.defaultIntf() if intf: - host.configDefault( defaultRoute=intf ) + host.configDefault() else: # Don't configure nonexistent intf host.configDefault( ip=None, mac=None ) diff --git a/mininet/node.py b/mininet/node.py index 43f0d69..10bf547 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -418,11 +418,18 @@ class Node( object ): def setDefaultRoute( self, intf=None ): """Set the default route to go through intf. - intf: string, interface name""" - if not intf: - intf = self.defaultIntf() - self.cmd( 'ip route flush root 0/0' ) - return self.cmd( 'route add default %s' % intf ) + intf: Intf or {dev via ...}""" + # Note setParam won't call us if intf is none + # See if interface is an actual interface + intf = self.intf( intf ) + if intf in self.ports: + params = 'dev %s' % intf + elif type( intf ) is str: + params = intf + else: + raise ValueError( 'intf or param string required' ) + self.cmd( 'ip route del default' ) + return self.cmd( 'ip route add default dev %s' % intf ) # Convenience and configuration methods