shill: Delete existing routes when the device is started.
BUG=chromium-os:27358
TEST=Unit tests, network_WiFiManager, manually add foreign routes and
ensure they are deleted, also test to make sure default route remains
after DHCP renewal
Change-Id: Ic26b70d685491f31699ff4684ed289e76af8a9ca
Reviewed-on: https://gerrit.chromium.org/gerrit/17640
Commit-Ready: Thieu Le <thieule@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/shill_daemon.cc b/shill_daemon.cc
index ae05866..2460dba 100644
--- a/shill_daemon.cc
+++ b/shill_daemon.cc
@@ -27,23 +27,27 @@
Daemon::Daemon(Config *config, ControlInterface *control)
: config_(config),
control_(control),
- manager_(control_,
- &dispatcher_,
- &metrics_,
- &glib_,
- config->GetRunDirectory(),
- config->GetStorageDirectory(),
- config->GetUserStorageDirectoryFormat()) {
+ proxy_factory_(ProxyFactory::GetInstance()),
+ rtnl_handler_(RTNLHandler::GetInstance()),
+ routing_table_(RoutingTable::GetInstance()),
+ dhcp_provider_(DHCPProvider::GetInstance()),
+ manager_(new Manager(control_,
+ &dispatcher_,
+ &metrics_,
+ &glib_,
+ config->GetRunDirectory(),
+ config->GetStorageDirectory(),
+ config->GetUserStorageDirectoryFormat())) {
}
Daemon::~Daemon() {}
void Daemon::AddDeviceToBlackList(const string &device_name) {
- manager_.AddDeviceToBlackList(device_name);
+ manager_->AddDeviceToBlackList(device_name);
}
void Daemon::SetStartupProfiles(const vector<string> &profile_name_list) {
Error error;
- manager_.set_startup_profiles(profile_name_list);
+ manager_->set_startup_profiles(profile_name_list);
}
void Daemon::Run() {
@@ -60,15 +64,15 @@
void Daemon::Start() {
glib_.TypeInit();
- ProxyFactory::GetInstance()->Init();
- RTNLHandler::GetInstance()->Start(&dispatcher_, &sockets_);
- RoutingTable::GetInstance()->Start();
- DHCPProvider::GetInstance()->Init(control_, &dispatcher_, &glib_);
- manager_.Start();
+ proxy_factory_->Init();
+ rtnl_handler_->Start(&dispatcher_, &sockets_);
+ routing_table_->Start();
+ dhcp_provider_->Init(control_, &dispatcher_, &glib_);
+ manager_->Start();
}
void Daemon::Stop() {
- manager_.Stop();
+ manager_->Stop();
}
} // namespace shill