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#include "chromeos/network/network_ip_config.h"
6
7#include "base/logging.h"
8
9namespace chromeos {
10
11namespace {
12#define ENUM_CASE(x) case x: return std::string(#x)
13std::string IPConfigTypeAsString(IPConfigType type) {
14  switch (type) {
15    ENUM_CASE(IPCONFIG_TYPE_UNKNOWN);
16    ENUM_CASE(IPCONFIG_TYPE_IPV4);
17    ENUM_CASE(IPCONFIG_TYPE_IPV6);
18    ENUM_CASE(IPCONFIG_TYPE_DHCP);
19    ENUM_CASE(IPCONFIG_TYPE_BOOTP);
20    ENUM_CASE(IPCONFIG_TYPE_ZEROCONF);
21    ENUM_CASE(IPCONFIG_TYPE_DHCP6);
22    ENUM_CASE(IPCONFIG_TYPE_PPP);
23  }
24  NOTREACHED() << "Unhandled enum value " << type;
25  return std::string();
26}
27#undef ENUM_CASE
28}  // namespace
29
30NetworkIPConfig::NetworkIPConfig(
31    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    : device_path(device_path),
35      type(type),
36      address(address),
37      netmask(netmask),
38      gateway(gateway),
39      name_servers(name_servers) {
40}
41
42NetworkIPConfig::~NetworkIPConfig() {}
43
44std::string NetworkIPConfig::ToString() const {
45  return std::string("path: ") + device_path
46      + " type: " + IPConfigTypeAsString(type)
47      + " address: " + address
48      + " netmask: " + netmask
49      + " gateway: " + gateway
50      + " name_servers: " + name_servers;
51}
52
53}  // namespace chromeos
54