shill: Cellular connections shouldn't use ARP gateway.
This CL adds an additional per-device-technology check to specify
whether or not an ARP gateway should be used when dhcp gets configured.
By default, all devices return |false| while WiFi returns |true|.
BUG=chrome-os-partner:16143
TEST=unit tests
Change-Id: Ia208d38a265702bbcbd1f7d0becfbc248d509ac8
Reviewed-on: https://gerrit.chromium.org/gerrit/38948
Tested-by: Arman Uguray <armansito@chromium.org>
Commit-Ready: Arman Uguray <armansito@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
diff --git a/device.cc b/device.cc
index 9ad0b32..73c0ffd 100644
--- a/device.cc
+++ b/device.cc
@@ -359,6 +359,10 @@
DestroyConnection();
}
+bool Device::ShouldUseArpGateway() const {
+ return false;
+}
+
bool Device::AcquireIPConfig() {
return AcquireIPConfigWithLeaseName(string());
}
@@ -366,10 +370,11 @@
bool Device::AcquireIPConfigWithLeaseName(const string &lease_name) {
DestroyIPConfig();
EnableIPv6();
+ bool arp_gateway = manager_->GetArpGateway() && ShouldUseArpGateway();
ipconfig_ = dhcp_provider_->CreateConfig(link_name_,
manager_->GetHostName(),
lease_name,
- manager_->GetArpGateway());
+ arp_gateway);
ipconfig_->RegisterUpdateCallback(Bind(&Device::OnIPConfigUpdated,
weak_ptr_factory_.GetWeakPtr()));
dispatcher_->PostTask(Bind(&Device::ConfigureStaticIPTask,