Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: tools/telemetry/telemetry/core/forwarders/android_forwarder.py

Issue 404803003: [Telemetry] Make rndis work on L release (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: moved routing override from configurator to forwarder Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/core/forwarders/android_forwarder.py
diff --git a/tools/telemetry/telemetry/core/forwarders/android_forwarder.py b/tools/telemetry/telemetry/core/forwarders/android_forwarder.py
index f2f09d3ac51259d0baaf4af6448a513793178167..af30c1bfb7c2069dd4e6ec552c7175bf090c7d50 100644
--- a/tools/telemetry/telemetry/core/forwarders/android_forwarder.py
+++ b/tools/telemetry/telemetry/core/forwarders/android_forwarder.py
@@ -78,6 +78,7 @@ class AndroidRndisForwarder(forwarders.Forwarder):
self._RedirectPorts(port_pairs)
if port_pairs.dns:
self._OverrideDns()
+ self._OverrideRoutingPolicy()
# TODO(tonyg): Verify that each port can connect to host.
@property
@@ -86,6 +87,7 @@ class AndroidRndisForwarder(forwarders.Forwarder):
def Close(self):
self._SetDns(*self._original_dns)
+ self._RestoreRoutingPolicy()
super(AndroidRndisForwarder, self).Close()
def _RedirectPorts(self, port_pairs):
@@ -128,10 +130,10 @@ class AndroidRndisForwarder(forwarders.Forwarder):
self._adb.device().SetProp('net.dnschange', int(dnschange) + 1)
# Since commit 8b47b3601f82f299bb8c135af0639b72b67230e6 to frameworks/base
# the net.dns1 properties have been replaced with explicit commands for netd
- self._adb.RunShellCommand('ndc netd resolver setifdns %s %s %s' %
+ self._adb.RunShellCommand('netd resolver setifdns %s %s %s' %
(iface, dns1, dns2))
# TODO(szym): if we know the package UID, we could setifaceforuidrange
- self._adb.RunShellCommand('ndc netd resolver setdefaultif %s' % iface)
+ self._adb.RunShellCommand('netd resolver setdefaultif %s' % iface)
def _GetCurrentDns(self):
"""Returns current gateway, dns1, and dns2."""
@@ -144,6 +146,21 @@ class AndroidRndisForwarder(forwarders.Forwarder):
self._adb.device().GetProp('net.dns2'),
)
+ def _OverrideRoutingPolicy(self):
+ """Override any routing policy that could prevent
+ packets from reaching the rndis interface
+ """
+ policies = self._device.RunShellCommand('ip rule')
marja 2014/08/27 11:08:19 This seems pretty broken: self._device does not ex
+ if len(policies) > 1 and not ('lookup main' in policies[1]):
+ self._device.RunShellCommand('ip rule add prio 1 from all table main')
+ self._device.RunShellCommand('ip route flush cache')
+
+ def _RestoreRoutingPolicy(self):
+ policies = self._adb.RunShellCommand('ip rule')
+ if len(policies) > 1 and re.match("^1:.*lookup main", policies[1]):
+ self._adb.RunShellCommand('ip rule del prio 1')
+ self._adb.RunShellCommand('ip route flush cache')
+
class AndroidRndisConfigurator(object):
"""Configures a linux host to connect to an android device via RNDIS.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698