Disable NIC offload for hosts in routinglib

Change-Id: Id2f8549f9b52c9a4895b3f219de640bb2244f7ea
diff --git a/routinglib.py b/routinglib.py
index 970ce77..c0ed910 100644
--- a/routinglib.py
+++ b/routinglib.py
@@ -153,6 +153,9 @@
         if self.defaultRoute:
             self.cmd('ip route add default via %s' % self.defaultRoute)
 
+        for interface in self.interfaces:
+            disable_offload(self, interface)
+
     def terminate(self, **kwargs):
         self.cmd("ps ax | grep '%s' | awk '{print $1}' | xargs kill"
                  % (self.socket))
@@ -339,6 +342,8 @@
                                         defaultRoute=defaultRoute,
                                         protocols=[bgp],
                                         *args, **kwargs)
+    def config(self, **kwargs):
+        super(BgpRouter, self).config(**kwargs)
 
 class RouterData(object):
 
@@ -678,3 +683,9 @@
             for intf in self.mn.get( host ).intfList( ):
                 intf.link.intf1.ifconfig( op )
                 intf.link.intf2.ifconfig( op )
+
+# Disable NIC offloading
+def disable_offload(host, intf):
+    for attr in ["rx", "tx", "sg"]:
+        cmd = "/sbin/ethtool --offload %s %s off" % (intf, attr)
+        host.cmd(cmd)