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

Side by Side Diff: chrome/browser/chromeos/cros/network_ip_config.cc

Issue 10827283: This updates the StaticIP configuration UI to match new mocks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_ip_config.h" 5 #include "chrome/browser/chromeos/cros/network_ip_config.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/string_tokenizer.h"
9 8
10 namespace chromeos { 9 namespace chromeos {
11 10
12 namespace { 11 namespace {
13 #define ENUM_CASE(x) case x: return std::string(#x) 12 #define ENUM_CASE(x) case x: return std::string(#x)
14 std::string IPConfigTypeAsString(IPConfigType type) { 13 std::string IPConfigTypeAsString(IPConfigType type) {
15 switch (type) { 14 switch (type) {
16 ENUM_CASE(IPCONFIG_TYPE_UNKNOWN); 15 ENUM_CASE(IPCONFIG_TYPE_UNKNOWN);
17 ENUM_CASE(IPCONFIG_TYPE_IPV4); 16 ENUM_CASE(IPCONFIG_TYPE_IPV4);
18 ENUM_CASE(IPCONFIG_TYPE_IPV6); 17 ENUM_CASE(IPCONFIG_TYPE_IPV6);
(...skipping 25 matching lines...) Expand all
44 43
45 std::string NetworkIPConfig::ToString() const { 44 std::string NetworkIPConfig::ToString() const {
46 return std::string("path: ") + device_path 45 return std::string("path: ") + device_path
47 + " type: " + IPConfigTypeAsString(type) 46 + " type: " + IPConfigTypeAsString(type)
48 + " address: " + address 47 + " address: " + address
49 + " netmask: " + netmask 48 + " netmask: " + netmask
50 + " gateway: " + gateway 49 + " gateway: " + gateway
51 + " name_servers: " + name_servers; 50 + " name_servers: " + name_servers;
52 } 51 }
53 52
54 int32 NetworkIPConfig::GetPrefixLength() const {
55 int count = 0;
56 int prefixlen = 0;
57 StringTokenizer t(netmask, ".");
58 while (t.GetNext()) {
59 // If there are more than 4 numbers, then it's invalid.
60 if (count == 4) {
61 return -1;
62 }
63 std::string token = t.token();
64 // If we already found the last mask and the current one is not
65 // "0" then the netmask is invalid. For example, 255.224.255.0
66 if (prefixlen / 8 != count) {
67 if (token != "0") {
68 return -1;
69 }
70 } else if (token == "255") {
71 prefixlen += 8;
72 } else if (token == "254") {
73 prefixlen += 7;
74 } else if (token == "252") {
75 prefixlen += 6;
76 } else if (token == "248") {
77 prefixlen += 5;
78 } else if (token == "240") {
79 prefixlen += 4;
80 } else if (token == "224") {
81 prefixlen += 3;
82 } else if (token == "192") {
83 prefixlen += 2;
84 } else if (token == "128") {
85 prefixlen += 1;
86 } else if (token == "0") {
87 prefixlen += 0;
88 } else {
89 // mask is not a valid number.
90 return -1;
91 }
92 count++;
93 }
94 if (count < 4)
95 return -1;
96 return prefixlen;
97 }
98
99 } // namespace chromeos 53 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/cros/network_ip_config.h ('k') | chrome/browser/chromeos/cros/network_library.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698