shill: Implement DHCPConfig::ReleaseIP
Also, add some unit tests, and some cleanup.
BUG=chromium-os:16365,chromium-os:16013
TEST=unit tests
Change-Id: I896bce08c6f177c9d5f6c5772c9208e8223c39df
Reviewed-on: http://gerrit.chromium.org/gerrit/2486
Reviewed-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/dhcp_config.h b/dhcp_config.h
index 6d4ca2b..1152d61 100644
--- a/dhcp_config.h
+++ b/dhcp_config.h
@@ -7,9 +7,9 @@
#include <base/file_path.h>
#include <base/memory/scoped_ptr.h>
+#include <dbus-c++/connection.h>
#include <glib.h>
#include <gtest/gtest_prod.h> // for FRIEND_TEST
-#include <dbus-c++/connection.h>
#include "shill/device.h"
#include "shill/ipconfig.h"
@@ -55,10 +55,18 @@
const Configuration &configuration);
private:
+ friend class DHCPConfigTest;
FRIEND_TEST(DHCPConfigTest, GetIPv4AddressString);
FRIEND_TEST(DHCPConfigTest, ParseConfiguration);
+ FRIEND_TEST(DHCPConfigTest, ReleaseIP);
+ FRIEND_TEST(DHCPConfigTest, RenewIP);
+ FRIEND_TEST(DHCPConfigTest, RequestIP);
+ FRIEND_TEST(DHCPConfigTest, Restart);
+ FRIEND_TEST(DHCPConfigTest, RestartNoClient);
FRIEND_TEST(DHCPConfigTest, StartFail);
FRIEND_TEST(DHCPConfigTest, StartSuccess);
+ FRIEND_TEST(DHCPConfigTest, Stop);
+ FRIEND_TEST(DHCPProviderTest, CreateConfig);
static const char kDHCPCDPath[];
static const char kDHCPCDPathFormatLease[];
@@ -70,6 +78,10 @@
// Stops dhcpcd if running.
void Stop();
+ // Stops dhcpcd if already running and then starts it. Returns true on success
+ // and false otherwise.
+ bool Restart();
+
// Parses |configuration| into |properties|. Returns true on success, and
// false otherwise.
bool ParseConfiguration(const Configuration& configuration,
@@ -82,6 +94,8 @@
// Called when the dhcpcd client process exits.
static void ChildWatchCallback(GPid pid, gint status, gpointer data);
+ // Cleans up remaining state from a running client, if any, including freeing
+ // its GPid, exit watch callback, and state files.
void CleanupClientState();
DHCPProvider *provider_;