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

Unified Diff: chrome/browser/chromeos/cros/network_library_impl_cros.cc

Issue 10412026: This fixes static IP setting on Ethernet when using flimflam. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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
Index: chrome/browser/chromeos/cros/network_library_impl_cros.cc
diff --git a/chrome/browser/chromeos/cros/network_library_impl_cros.cc b/chrome/browser/chromeos/cros/network_library_impl_cros.cc
index f86abbaa37119151f329e2b7292f24ff93f1cf03..9036770b0161ce860f20b842dee0e6284babc631 100644
--- a/chrome/browser/chromeos/cros/network_library_impl_cros.cc
+++ b/chrome/browser/chromeos/cros/network_library_impl_cros.cc
@@ -515,6 +515,8 @@ void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) {
if (ipconfig.device_path.empty())
return;
+ VLOG(1) << "Setting IPConfig: " << ipconfig.ToString();
+
NetworkIPConfig* ipconfig_dhcp = NULL;
std::string ipconfig_dhcp_path;
NetworkIPConfig* ipconfig_static = NULL;
@@ -536,17 +538,24 @@ void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) {
NetworkIPConfigVector ipconfigs2;
std::vector<std::string> ipconfig_paths2;
if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) {
- // If switching from static to dhcp, create new dhcp ip config.
- if (!ipconfig_dhcp)
- CrosAddIPConfig(ipconfig.device_path, chromeos::IPCONFIG_TYPE_DHCP);
- // User wants DHCP now. So delete the static ip config.
+ // If switching from static to DHCP, create new DHCP IPConfig.
+ if (!ipconfig_dhcp &&
+ !CrosAddIPConfig(ipconfig.device_path, chromeos::IPCONFIG_TYPE_DHCP)) {
+ LOG(ERROR) << "Unable to add new DHCP IPConfig";
+ return;
+ }
+ // User wants DHCP now. So delete the static IPConfig.
if (ipconfig_static)
CrosRemoveIPConfig(ipconfig_static_path);
} else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4) {
- // If switching from dhcp to static, create new static ip config.
+ // If switching from DHCP to static, create new static IPConfig.
if (!ipconfig_static) {
- CrosAddIPConfig(ipconfig.device_path, chromeos::IPCONFIG_TYPE_IPV4);
- // Now find the newly created IP config.
+ if (!CrosAddIPConfig(ipconfig.device_path,
+ chromeos::IPCONFIG_TYPE_IPV4)) {
+ LOG(ERROR) << "Unable to add new static IPConfig";
+ return;
+ }
+ // Now find the newly created IPConfig.
if (CrosListIPConfigs(ipconfig.device_path, &ipconfigs2,
&ipconfig_paths2, NULL)) {
for (size_t i = 0; i < ipconfigs2.size(); ++i) {
@@ -556,39 +565,42 @@ void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) {
}
}
}
- }
- if (ipconfig_static) {
- // Save any changed details.
- if (ipconfig.address != ipconfig_static->address) {
- base::StringValue value(ipconfig.address);
- CrosSetNetworkIPConfigProperty(ipconfig_static->device_path,
- flimflam::kAddressProperty, value);
- }
- if (ipconfig.netmask != ipconfig_static->netmask) {
- int prefixlen = ipconfig.GetPrefixLength();
- if (prefixlen == -1) {
- VLOG(1) << "IP config prefixlen is invalid for netmask "
- << ipconfig.netmask;
- } else {
- base::FundamentalValue value(prefixlen);
- CrosSetNetworkIPConfigProperty(ipconfig_static->device_path,
- flimflam::kPrefixlenProperty, value);
- }
- }
- if (ipconfig.gateway != ipconfig_static->gateway) {
- base::StringValue value(ipconfig.gateway);
- CrosSetNetworkIPConfigProperty(ipconfig_static->device_path,
- flimflam::kGatewayProperty, value);
+ if (!ipconfig_static) {
+ LOG(ERROR) << "Unable to find newly added static IPConfig";
+ return;
}
- if (ipconfig.name_servers != ipconfig_static->name_servers) {
- base::StringValue value(ipconfig.name_servers);
- CrosSetNetworkIPConfigProperty(ipconfig_static->device_path,
- flimflam::kNameServersProperty, value);
+ }
+
+ // Save any changed details.
+ if (ipconfig.address != ipconfig_static->address) {
+ base::StringValue value(ipconfig.address);
+ CrosSetNetworkIPConfigProperty(ipconfig_static_path,
+ flimflam::kAddressProperty, value);
+ }
+ if (ipconfig.netmask != ipconfig_static->netmask) {
+ int prefixlen = ipconfig.GetPrefixLength();
+ if (prefixlen == -1) {
+ VLOG(1) << "IPConfig prefix length is invalid for netmask "
+ << ipconfig.netmask;
+ } else {
+ base::FundamentalValue value(prefixlen);
+ CrosSetNetworkIPConfigProperty(ipconfig_static_path,
+ flimflam::kPrefixlenProperty, value);
}
- // Remove dhcp ip config if there is one.
- if (ipconfig_dhcp)
- CrosRemoveIPConfig(ipconfig_dhcp_path);
}
+ if (ipconfig.gateway != ipconfig_static->gateway) {
+ base::StringValue value(ipconfig.gateway);
+ CrosSetNetworkIPConfigProperty(ipconfig_static_path,
+ flimflam::kGatewayProperty, value);
+ }
+ if (ipconfig.name_servers != ipconfig_static->name_servers) {
+ base::StringValue value(ipconfig.name_servers);
+ CrosSetNetworkIPConfigProperty(ipconfig_static_path,
+ flimflam::kNameServersProperty, value);
+ }
+ // Remove DHCP IPConfig if there is one.
+ if (ipconfig_dhcp)
+ CrosRemoveIPConfig(ipconfig_dhcp_path);
}
}

Powered by Google App Engine
This is Rietveld 408576698