- add sources.
[platform/framework/web/crosswalk.git] / src / chromeos / network / network_ip_config.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROMEOS_NETWORK_NETWORK_IP_CONFIG_H_
6 #define CHROMEOS_NETWORK_NETWORK_IP_CONFIG_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "base/callback.h"
13 #include "chromeos/chromeos_export.h"
14
15 namespace chromeos {
16
17 // ipconfig types (see flimflam/files/doc/ipconfig-api.txt)
18 enum IPConfigType {
19   IPCONFIG_TYPE_UNKNOWN,
20   IPCONFIG_TYPE_IPV4,
21   IPCONFIG_TYPE_IPV6,
22   IPCONFIG_TYPE_DHCP,
23   IPCONFIG_TYPE_BOOTP,  // Not Used.
24   IPCONFIG_TYPE_ZEROCONF,
25   IPCONFIG_TYPE_DHCP6,
26   IPCONFIG_TYPE_PPP,
27 };
28
29 // IP Configuration.
30 struct CHROMEOS_EXPORT NetworkIPConfig {
31   NetworkIPConfig(const std::string& device_path, IPConfigType type,
32                   const std::string& address, const std::string& netmask,
33                   const std::string& gateway, const std::string& name_servers);
34   ~NetworkIPConfig();
35
36   std::string ToString() const;
37
38   std::string device_path;  // This looks like "/device/0011aa22bb33"
39   IPConfigType type;
40   std::string address;
41   std::string netmask;
42   std::string gateway;
43   std::string name_servers;
44 };
45
46 typedef std::vector<NetworkIPConfig> NetworkIPConfigVector;
47
48 // Used to return the list of IP configs and hardware address from an
49 // asynchronous call to Shill. The hardware address is usually a MAC address
50 // like "0011AA22BB33". |hardware_address| will be an empty string, if no
51 // hardware address is found.
52 typedef base::Callback<void(const NetworkIPConfigVector& ip_configs,
53                             const std::string& hardware_address)>
54     NetworkGetIPConfigsCallback;
55
56 }  // namespace chromeos
57
58 #endif  // CHROMEOS_NETWORK_NETWORK_IP_CONFIG_H_