Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/cros/network_library.h" | 5 #include "chrome/browser/chromeos/cros/network_library.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/i18n/icu_encoding_detection.h" | 10 #include "base/i18n/icu_encoding_detection.h" |
| (...skipping 3370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3381 chromeos::ListIPConfigs(ipconfig.device_path.c_str()); | 3381 chromeos::ListIPConfigs(ipconfig.device_path.c_str()); |
| 3382 if (ipconfig_status) { | 3382 if (ipconfig_status) { |
| 3383 for (int i = 0; i < ipconfig_status->size; i++) { | 3383 for (int i = 0; i < ipconfig_status->size; i++) { |
| 3384 if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_DHCP) | 3384 if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_DHCP) |
| 3385 ipconfig_dhcp = &ipconfig_status->ips[i]; | 3385 ipconfig_dhcp = &ipconfig_status->ips[i]; |
| 3386 else if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4) | 3386 else if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4) |
| 3387 ipconfig_static = &ipconfig_status->ips[i]; | 3387 ipconfig_static = &ipconfig_status->ips[i]; |
| 3388 } | 3388 } |
| 3389 } | 3389 } |
| 3390 | 3390 |
| 3391 // If switching from dhcp to static, then create new static ip config. | |
| 3392 IPConfigStatus* ipconfig_status2 = NULL; | 3391 IPConfigStatus* ipconfig_status2 = NULL; |
| 3393 if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4 && !ipconfig_static) { | 3392 if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) { |
| 3394 // Create new static ip config. | 3393 // If switching from static to dhcp, create new dhcp ip config. |
| 3395 chromeos::AddIPConfig(ipconfig.device_path.c_str(), | 3394 if (!ipconfig_dhcp) |
| 3396 chromeos::IPCONFIG_TYPE_IPV4); | 3395 chromeos::AddIPConfig(ipconfig.device_path.c_str(), |
| 3397 // Now find the newly created IP config. | 3396 chromeos::IPCONFIG_TYPE_DHCP); |
| 3398 ipconfig_status2 = chromeos::ListIPConfigs(ipconfig.device_path.c_str()); | 3397 // User wants DHCP now. So delete the static ip config. |
| 3399 if (ipconfig_status2) { | 3398 if (ipconfig_static) |
| 3400 for (int i = 0; i < ipconfig_status2->size; i++) { | 3399 chromeos::RemoveIPConfig(ipconfig_static); |
|
stevenjb
2011/06/01 22:53:51
Do we need to set ipconfig_static = NULL here so t
Charlie Lee
2011/06/01 22:58:07
we no longer use ipconfig_static anymore in this m
| |
| 3401 if (ipconfig_status2->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4) | 3400 } else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4) { |
| 3402 ipconfig_static = &ipconfig_status2->ips[i]; | 3401 // If switching from dhcp to static, create new static ip config. |
| 3402 if (!ipconfig_static) { | |
| 3403 chromeos::AddIPConfig(ipconfig.device_path.c_str(), | |
| 3404 chromeos::IPCONFIG_TYPE_IPV4); | |
| 3405 // Now find the newly created IP config. | |
| 3406 ipconfig_status2 = | |
| 3407 chromeos::ListIPConfigs(ipconfig.device_path.c_str()); | |
| 3408 if (ipconfig_status2) { | |
| 3409 for (int i = 0; i < ipconfig_status2->size; i++) { | |
| 3410 if (ipconfig_status2->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4) | |
| 3411 ipconfig_static = &ipconfig_status2->ips[i]; | |
| 3412 } | |
| 3403 } | 3413 } |
| 3404 } | 3414 } |
| 3405 } | |
| 3406 | |
| 3407 if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) { | |
| 3408 if (ipconfig_static) { | |
| 3409 // User wants DHCP now. So delete the static ip config. | |
| 3410 chromeos::RemoveIPConfig(ipconfig_static); | |
| 3411 } | |
| 3412 } else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4) { | |
| 3413 if (ipconfig_static) { | 3415 if (ipconfig_static) { |
| 3414 // Save any changed details. | 3416 // Save any changed details. |
| 3415 if (ipconfig.address != ipconfig_static->address) { | 3417 if (ipconfig.address != ipconfig_static->address) { |
| 3416 scoped_ptr<Value> value(Value::CreateStringValue(ipconfig.address)); | 3418 scoped_ptr<Value> value(Value::CreateStringValue(ipconfig.address)); |
| 3417 chromeos::SetNetworkIPConfigProperty(ipconfig_static->path, | 3419 chromeos::SetNetworkIPConfigProperty(ipconfig_static->path, |
| 3418 kAddressProperty, | 3420 kAddressProperty, |
| 3419 value.get()); | 3421 value.get()); |
| 3420 } | 3422 } |
| 3421 if (ipconfig.netmask != ipconfig_static->netmask) { | 3423 if (ipconfig.netmask != ipconfig_static->netmask) { |
| 3422 int32 prefixlen = ipconfig.GetPrefixLength(); | 3424 int32 prefixlen = ipconfig.GetPrefixLength(); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 3437 value.get()); | 3439 value.get()); |
| 3438 } | 3440 } |
| 3439 if (ipconfig.name_servers != ipconfig_static->name_servers) { | 3441 if (ipconfig.name_servers != ipconfig_static->name_servers) { |
| 3440 scoped_ptr<Value> value( | 3442 scoped_ptr<Value> value( |
| 3441 Value::CreateStringValue(ipconfig.name_servers)); | 3443 Value::CreateStringValue(ipconfig.name_servers)); |
| 3442 chromeos::SetNetworkIPConfigProperty(ipconfig_static->path, | 3444 chromeos::SetNetworkIPConfigProperty(ipconfig_static->path, |
| 3443 kNameServersProperty, | 3445 kNameServersProperty, |
| 3444 value.get()); | 3446 value.get()); |
| 3445 } | 3447 } |
| 3446 // Remove dhcp ip config if there is one. | 3448 // Remove dhcp ip config if there is one. |
| 3447 if (ipconfig_dhcp) { | 3449 if (ipconfig_dhcp) |
| 3448 chromeos::RemoveIPConfig(ipconfig_dhcp); | 3450 chromeos::RemoveIPConfig(ipconfig_dhcp); |
| 3449 } | |
| 3450 } | 3451 } |
| 3451 } | 3452 } |
| 3452 | 3453 |
| 3453 if (ipconfig_status) | 3454 if (ipconfig_status) |
| 3454 chromeos::FreeIPConfigStatus(ipconfig_status); | 3455 chromeos::FreeIPConfigStatus(ipconfig_status); |
| 3455 if (ipconfig_status2) | 3456 if (ipconfig_status2) |
| 3456 chromeos::FreeIPConfigStatus(ipconfig_status2); | 3457 chromeos::FreeIPConfigStatus(ipconfig_status2); |
| 3457 } | 3458 } |
| 3458 | 3459 |
| 3459 private: | 3460 private: |
| (...skipping 1625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5085 return new NetworkLibraryStubImpl(); | 5086 return new NetworkLibraryStubImpl(); |
| 5086 else | 5087 else |
| 5087 return new NetworkLibraryImpl(); | 5088 return new NetworkLibraryImpl(); |
| 5088 } | 5089 } |
| 5089 | 5090 |
| 5090 } // namespace chromeos | 5091 } // namespace chromeos |
| 5091 | 5092 |
| 5092 // Allows InvokeLater without adding refcounting. This class is a Singleton and | 5093 // Allows InvokeLater without adding refcounting. This class is a Singleton and |
| 5093 // won't be deleted until it's last InvokeLater is run. | 5094 // won't be deleted until it's last InvokeLater is run. |
| 5094 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::NetworkLibraryImpl); | 5095 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::NetworkLibraryImpl); |
| OLD | NEW |