shill: Parse dhcpcd Event signal properties.
BUG=chromium-os:16126
TEST=unit test
Change-Id: Idafd3cebc015a5f900fd589c27dfcd1b405da7ef
Reviewed-on: http://gerrit.chromium.org/gerrit/2126
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/dhcp_config.h b/dhcp_config.h
index f916971..0707774 100644
--- a/dhcp_config.h
+++ b/dhcp_config.h
@@ -6,6 +6,7 @@
#define SHILL_DHCP_CONFIG_
#include <base/memory/scoped_ptr.h>
+#include <gtest/gtest_prod.h> // for FRIEND_TEST
#include <dbus-c++/connection.h>
#include "shill/ipconfig.h"
@@ -20,6 +21,17 @@
class DHCPConfig : public IPConfig {
public:
+ typedef std::map<std::string, DBus::Variant> Configuration;
+
+ static const char kConfigurationKeyBroadcastAddress[];
+ static const char kConfigurationKeyDNS[];
+ static const char kConfigurationKeyDomainName[];
+ static const char kConfigurationKeyDomainSearch[];
+ static const char kConfigurationKeyIPAddress[];
+ static const char kConfigurationKeyMTU[];
+ static const char kConfigurationKeyRouters[];
+ static const char kConfigurationKeySubnetCIDR[];
+
DHCPConfig(DHCPProvider *provider, const Device &device);
virtual ~DHCPConfig();
@@ -31,12 +43,28 @@
// |service|.
void InitProxy(DBus::Connection *connection, const char *service);
+ // Processes an Event signal from dhcpcd.
+ void ProcessEventSignal(const std::string &reason,
+ const Configuration &configuration);
+
private:
+ FRIEND_TEST(DHCPConfigTest, GetIPv4AddressString);
+ FRIEND_TEST(DHCPConfigTest, ParseConfiguration);
+
static const char kDHCPCDPath[];
// Starts dhcpcd, returns true on success and false otherwise.
bool Start();
+ // Parses |configuration| into |properties|. Returns true on success, and
+ // false otherwise.
+ bool ParseConfiguration(const Configuration& configuration,
+ IPConfig::Properties *properties);
+
+ // Returns the string representation of the IP address |address|, or an
+ // empty string on failure.
+ std::string GetIPv4AddressString(unsigned int address);
+
DHCPProvider *provider_;
// The PID of the spawned DHCP client. May be 0 if no client has been spawned