blob: 44cf71ef3489ca3654e3acfbebc4812a2d774ea1 [file] [log] [blame]
mukesh agrawal6bb9e7c2012-01-30 14:57:54 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Chris Masoned7732e42011-05-20 11:08:56 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/manager_dbus_adaptor.h"
6
7#include <map>
8#include <string>
Chris Masone8fe2c7e2011-06-09 15:51:19 -07009#include <vector>
Chris Masoned7732e42011-05-20 11:08:56 -070010
Chris Masone8fe2c7e2011-06-09 15:51:19 -070011#include <dbus-c++/dbus.h>
12
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -080013#include "shill/callbacks.h"
mukesh agrawal32399322011-09-01 10:53:43 -070014#include "shill/device.h"
Chris Masone8fe2c7e2011-06-09 15:51:19 -070015#include "shill/error.h"
Gaurav Shahb790aa22012-10-23 12:51:12 -070016#include "shill/geolocation_info.h"
mukesh agrawal7a4e4002011-09-06 11:26:05 -070017#include "shill/key_value_store.h"
Christopher Wileyb691efd2012-08-09 13:51:51 -070018#include "shill/logging.h"
Chris Masone8fe2c7e2011-06-09 15:51:19 -070019#include "shill/manager.h"
Chris Masone7ccc8192011-05-24 14:54:49 -070020
Chris Masoned7732e42011-05-20 11:08:56 -070021using std::map;
22using std::string;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070023using std::vector;
Chris Masoned7732e42011-05-20 11:08:56 -070024
25namespace shill {
26
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070027namespace Logging {
28static auto kModuleLogScope = ScopeLogger::kDBus;
Paul Stewart8ae18742015-06-16 13:13:10 -070029static string ObjectID(ManagerDBusAdaptor* m) { return m->GetRpcIdentifier(); }
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070030}
31
Chris Masoned7732e42011-05-20 11:08:56 -070032// static
Chris Masone19e30402011-07-19 15:48:47 -070033const char ManagerDBusAdaptor::kPath[] = "/";
Chris Masoned7732e42011-05-20 11:08:56 -070034
Paul Stewart8ae18742015-06-16 13:13:10 -070035ManagerDBusAdaptor::ManagerDBusAdaptor(DBus::Connection* conn, Manager* manager)
Chris Masoned7732e42011-05-20 11:08:56 -070036 : DBusAdaptor(conn, kPath),
37 manager_(manager) {
38}
Chris Masoneec6b18b2011-06-08 14:09:10 -070039
40ManagerDBusAdaptor::~ManagerDBusAdaptor() {
Ben Chancc225ef2014-09-30 13:26:51 -070041 manager_ = nullptr;
Chris Masoneec6b18b2011-06-08 14:09:10 -070042}
Chris Masoned7732e42011-05-20 11:08:56 -070043
44void ManagerDBusAdaptor::UpdateRunning() {}
45
Paul Stewart8ae18742015-06-16 13:13:10 -070046void ManagerDBusAdaptor::EmitBoolChanged(const string& name, bool value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070047 SLOG(this, 2) << __func__ << ": " << name;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070048 PropertyChanged(name, DBusAdaptor::BoolToVariant(value));
49}
50
Paul Stewart8ae18742015-06-16 13:13:10 -070051void ManagerDBusAdaptor::EmitUintChanged(const string& name,
Ben Chan7fab8972014-08-10 17:14:46 -070052 uint32_t value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070053 SLOG(this, 2) << __func__ << ": " << name;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070054 PropertyChanged(name, DBusAdaptor::Uint32ToVariant(value));
Chris Masoned0ceb8c2011-06-02 10:05:39 -070055}
56
Paul Stewart8ae18742015-06-16 13:13:10 -070057void ManagerDBusAdaptor::EmitIntChanged(const string& name, int value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070058 SLOG(this, 2) << __func__ << ": " << name;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070059 PropertyChanged(name, DBusAdaptor::Int32ToVariant(value));
Chris Masoned0ceb8c2011-06-02 10:05:39 -070060}
61
Paul Stewart8ae18742015-06-16 13:13:10 -070062void ManagerDBusAdaptor::EmitStringChanged(const string& name,
63 const string& value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070064 SLOG(this, 2) << __func__ << ": " << name;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070065 PropertyChanged(name, DBusAdaptor::StringToVariant(value));
66}
67
Paul Stewart8ae18742015-06-16 13:13:10 -070068void ManagerDBusAdaptor::EmitStringsChanged(const string& name,
69 const vector<string>& value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070070 SLOG(this, 2) << __func__ << ": " << name;
Gaurav Shah435de2c2011-11-17 19:01:07 -080071 PropertyChanged(name, DBusAdaptor::StringsToVariant(value));
72}
73
Paul Stewart49739c02012-08-08 17:24:03 -070074void ManagerDBusAdaptor::EmitRpcIdentifierChanged(
Paul Stewart8ae18742015-06-16 13:13:10 -070075 const string& name,
76 const string& value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070077 SLOG(this, 2) << __func__ << ": " << name;
Paul Stewart49739c02012-08-08 17:24:03 -070078 PropertyChanged(name, DBusAdaptor::PathToVariant(value));
79}
80
mukesh agrawal32399322011-09-01 10:53:43 -070081void ManagerDBusAdaptor::EmitRpcIdentifierArrayChanged(
Paul Stewart8ae18742015-06-16 13:13:10 -070082 const string& name,
83 const vector<string>& value) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070084 SLOG(this, 2) << __func__ << ": " << name;
Ben Chane2ee5e02014-09-19 19:29:42 -070085 vector<DBus::Path> paths;
Paul Stewart8ae18742015-06-16 13:13:10 -070086 for (const auto& element : value) {
Paul Stewart6db7b242014-05-02 15:34:21 -070087 paths.push_back(element);
mukesh agrawal32399322011-09-01 10:53:43 -070088 }
89
mukesh agrawal2366eed2012-03-20 18:21:50 -070090 PropertyChanged(name, DBusAdaptor::PathsToVariant(paths));
mukesh agrawal32399322011-09-01 10:53:43 -070091}
92
Paul Stewart8ae18742015-06-16 13:13:10 -070093void ManagerDBusAdaptor::EmitStateChanged(const string& new_state) {
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -070094 SLOG(this, 2) << __func__;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070095 StateChanged(new_state);
96}
97
Ben Chan3f4d4ee2014-09-09 07:41:33 -070098map<string, DBus::Variant> ManagerDBusAdaptor::GetProperties(
Paul Stewart8ae18742015-06-16 13:13:10 -070099 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700100 SLOG(this, 2) << __func__;
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700101 map<string, DBus::Variant> properties;
Chris Masone27c4aa52011-07-02 13:10:14 -0700102 DBusAdaptor::GetProperties(manager_->store(), &properties, &error);
Chris Masonea8a2c252011-06-27 22:16:30 -0700103 return properties;
Chris Masoned7732e42011-05-20 11:08:56 -0700104}
105
Paul Stewart8ae18742015-06-16 13:13:10 -0700106void ManagerDBusAdaptor::SetProperty(const string& name,
107 const DBus::Variant& value,
108 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700109 SLOG(this, 2) << __func__ << ": " << name;
mukesh agrawal6bb9e7c2012-01-30 14:57:54 -0800110 if (DBusAdaptor::SetProperty(manager_->mutable_store(),
111 name,
112 value,
113 &error)) {
Chris Masone3bd3c8c2011-06-13 08:20:26 -0700114 PropertyChanged(name, value);
115 }
Chris Masoned7732e42011-05-20 11:08:56 -0700116}
117
Paul Stewart8ae18742015-06-16 13:13:10 -0700118string ManagerDBusAdaptor::GetState(DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700119 SLOG(this, 2) << __func__;
Ben Chancc225ef2014-09-30 13:26:51 -0700120 return manager_->CalculateState(nullptr);
Chris Masoned7732e42011-05-20 11:08:56 -0700121}
122
Paul Stewart8ae18742015-06-16 13:13:10 -0700123DBus::Path ManagerDBusAdaptor::CreateProfile(const string& name,
124 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700125 SLOG(this, 2) << __func__ << ": " << name;
Paul Stewart19c871d2011-12-15 16:10:13 -0800126 Error e;
127 string path;
128 manager_->CreateProfile(name, &path, &e);
Paul Stewartf3eced92013-04-17 12:18:22 -0700129 if (e.ToDBusError(&error)) {
130 return "/";
131 }
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700132 return DBus::Path(path);
Chris Masoned7732e42011-05-20 11:08:56 -0700133}
134
Paul Stewart8ae18742015-06-16 13:13:10 -0700135void ManagerDBusAdaptor::RemoveProfile(const string& name,
136 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700137 SLOG(this, 2) << __func__ << ": " << name;
Paul Stewarte73d05c2012-03-29 16:26:05 -0700138 Error e;
139 manager_->RemoveProfile(name, &e);
140 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700141}
142
Paul Stewart8ae18742015-06-16 13:13:10 -0700143DBus::Path ManagerDBusAdaptor::PushProfile(const string& name,
144 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700145 SLOG(this, 2) << __func__ << ": " << name;
Paul Stewart19c871d2011-12-15 16:10:13 -0800146 Error e;
147 string path;
148 manager_->PushProfile(name, &path, &e);
Paul Stewartf3eced92013-04-17 12:18:22 -0700149 if (e.ToDBusError(&error)) {
150 return "/";
151 }
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700152 return DBus::Path(path);
Paul Stewartf3eced92013-04-17 12:18:22 -0700153}
154
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700155DBus::Path ManagerDBusAdaptor::InsertUserProfile(
Paul Stewart8ae18742015-06-16 13:13:10 -0700156 const string& name,
157 const string& user_hash,
158 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700159 SLOG(this, 2) << __func__ << ": " << name;
Paul Stewartf3eced92013-04-17 12:18:22 -0700160 Error e;
161 string path;
162 manager_->InsertUserProfile(name, user_hash, &path, &e);
163 if (e.ToDBusError(&error)) {
164 return "/";
165 }
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700166 return DBus::Path(path);
Chris Masoneccc88812011-06-08 18:00:10 -0700167}
168
Paul Stewart8ae18742015-06-16 13:13:10 -0700169void ManagerDBusAdaptor::PopProfile(const string& name,
170 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700171 SLOG(this, 2) << __func__ << ": " << name;
Paul Stewart19c871d2011-12-15 16:10:13 -0800172 Error e;
173 manager_->PopProfile(name, &e);
174 e.ToDBusError(&error);
Chris Masoneccc88812011-06-08 18:00:10 -0700175}
176
Paul Stewart8ae18742015-06-16 13:13:10 -0700177void ManagerDBusAdaptor::PopAnyProfile(DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700178 SLOG(this, 2) << __func__;
Paul Stewart19c871d2011-12-15 16:10:13 -0800179 Error e;
180 manager_->PopAnyProfile(&e);
181 e.ToDBusError(&error);
Chris Masoneccc88812011-06-08 18:00:10 -0700182}
183
Paul Stewart8ae18742015-06-16 13:13:10 -0700184void ManagerDBusAdaptor::PopAllUserProfiles(DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700185 SLOG(this, 2) << __func__;
Paul Stewart307c2502013-03-23 12:32:10 -0700186 Error e;
187 manager_->PopAllUserProfiles(&e);
188 e.ToDBusError(&error);
189}
190
Paul Stewart8ae18742015-06-16 13:13:10 -0700191void ManagerDBusAdaptor::RecheckPortal(DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700192 SLOG(this, 2) << __func__;
Paul Stewartc681fa02012-03-02 19:40:04 -0800193 Error e;
194 manager_->RecheckPortal(&e);
195 e.ToDBusError(&error);
196}
197
Paul Stewart8ae18742015-06-16 13:13:10 -0700198void ManagerDBusAdaptor::RequestScan(const string& technology,
199 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700200 SLOG(this, 2) << __func__ << ": " << technology;
mukesh agrawal32399322011-09-01 10:53:43 -0700201 Error e;
Wade Guthrie68d41092013-04-02 12:56:02 -0700202 manager_->RequestScan(Device::kFullScan, technology, &e);
mukesh agrawal32399322011-09-01 10:53:43 -0700203 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700204}
205
Paul Stewart8ae18742015-06-16 13:13:10 -0700206void ManagerDBusAdaptor::EnableTechnology(const string& technology_name,
207 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700208 SLOG(this, 2) << __func__ << ": " << technology_name;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500209 Error e(Error::kOperationInitiated);
Paul Stewart8ae18742015-06-16 13:13:10 -0700210 DBus::Tag* tag = new DBus::Tag();
mukesh agrawal46c27cc2013-07-10 16:39:10 -0700211 manager_->SetEnabledStateForTechnology(technology_name, true, &e,
212 GetMethodReplyCallback(tag));
Eric Shienbrood9a245532012-03-07 14:20:39 -0500213 ReturnResultOrDefer(tag, e, &error);
Chris Masoned7732e42011-05-20 11:08:56 -0700214}
215
Paul Stewart8ae18742015-06-16 13:13:10 -0700216void ManagerDBusAdaptor::DisableTechnology(const string& technology_name,
217 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700218 SLOG(this, 2) << __func__ << ": " << technology_name;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500219 Error e(Error::kOperationInitiated);
Paul Stewart8ae18742015-06-16 13:13:10 -0700220 DBus::Tag* tag = new DBus::Tag();
mukesh agrawal46c27cc2013-07-10 16:39:10 -0700221 manager_->SetEnabledStateForTechnology(technology_name, false, &e,
222 GetMethodReplyCallback(tag));
Eric Shienbrood9a245532012-03-07 14:20:39 -0500223 ReturnResultOrDefer(tag, e, &error);
Chris Masoned7732e42011-05-20 11:08:56 -0700224}
225
Darin Petkovb65c2452012-02-23 15:17:06 +0100226// Called, e.g., to get WiFiService handle for a hidden SSID.
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700227DBus::Path ManagerDBusAdaptor::GetService(
Paul Stewart8ae18742015-06-16 13:13:10 -0700228 const map<string, DBus::Variant>& args,
229 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700230 SLOG(this, 2) << __func__;
Darin Petkovb65c2452012-02-23 15:17:06 +0100231 ServiceRefPtr service;
232 KeyValueStore args_store;
233 Error e;
234 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &e);
235 if (e.IsSuccess()) {
236 service = manager_->GetService(args_store, &e);
237 }
238 if (e.ToDBusError(&error)) {
239 return "/"; // ensure return is syntactically valid
240 }
241 return service->GetRpcIdentifier();
Chris Masoned7732e42011-05-20 11:08:56 -0700242}
243
Darin Petkovb65c2452012-02-23 15:17:06 +0100244// Obsolete, use GetService instead.
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700245DBus::Path ManagerDBusAdaptor::GetVPNService(
Paul Stewart8ae18742015-06-16 13:13:10 -0700246 const map<string, DBus::Variant>& args,
247 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700248 SLOG(this, 2) << __func__;
Darin Petkovb65c2452012-02-23 15:17:06 +0100249 return GetService(args, error);
250}
251
252// Obsolete, use GetService instead.
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700253DBus::Path ManagerDBusAdaptor::GetWifiService(
Paul Stewart8ae18742015-06-16 13:13:10 -0700254 const map<string, DBus::Variant>& args,
255 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700256 SLOG(this, 2) << __func__;
Darin Petkovb65c2452012-02-23 15:17:06 +0100257 return GetService(args, error);
Chris Masoned7732e42011-05-20 11:08:56 -0700258}
259
Paul Stewart7f61e522012-03-22 11:13:45 -0700260
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700261DBus::Path ManagerDBusAdaptor::ConfigureService(
Paul Stewart8ae18742015-06-16 13:13:10 -0700262 const map<string, DBus::Variant>& args,
263 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700264 SLOG(this, 2) << __func__;
Paul Stewartd39d6922012-12-21 08:59:57 -0800265 ServiceRefPtr service;
Paul Stewart7f61e522012-03-22 11:13:45 -0700266 KeyValueStore args_store;
Paul Stewartd39d6922012-12-21 08:59:57 -0800267 Error key_value_store_error;
268 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &key_value_store_error);
269 if (key_value_store_error.ToDBusError(&error)) {
270 return "/"; // ensure return is syntactically valid.
Paul Stewart7f61e522012-03-22 11:13:45 -0700271 }
Paul Stewartd39d6922012-12-21 08:59:57 -0800272 Error configure_error;
273 service = manager_->ConfigureService(args_store, &configure_error);
274 if (configure_error.ToDBusError(&error)) {
275 return "/"; // ensure return is syntactically valid.
276 }
277 return service->GetRpcIdentifier();
Chris Masoned7732e42011-05-20 11:08:56 -0700278}
279
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700280DBus::Path ManagerDBusAdaptor::ConfigureServiceForProfile(
Paul Stewart8ae18742015-06-16 13:13:10 -0700281 const DBus::Path& profile_rpcid,
282 const map<string, DBus::Variant>& args,
283 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700284 SLOG(this, 2) << __func__;
Paul Stewartd2e1c362013-03-03 19:06:07 -0800285 ServiceRefPtr service;
286 KeyValueStore args_store;
287 Error key_value_store_error;
288 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &key_value_store_error);
289 if (key_value_store_error.ToDBusError(&error)) {
290 return "/"; // ensure return is syntactically valid.
291 }
292 Error configure_error;
293 service = manager_->ConfigureServiceForProfile(
294 profile_rpcid, args_store, &configure_error);
295 if (!service || configure_error.ToDBusError(&error)) {
296 return "/"; // ensure return is syntactically valid.
297 }
298 return service->GetRpcIdentifier();
299}
300
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700301DBus::Path ManagerDBusAdaptor::FindMatchingService(
Paul Stewart8ae18742015-06-16 13:13:10 -0700302 const map<string, DBus::Variant>& args,
303 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700304 SLOG(this, 2) << __func__;
Paul Stewart7a20aa42013-01-17 12:21:41 -0800305 KeyValueStore args_store;
306 Error value_error;
307 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &value_error);
308 if (value_error.ToDBusError(&error)) {
309 return "/"; // ensure return is syntactically valid
310 }
311
312 Error find_error;
313 ServiceRefPtr service =
314 manager_->FindMatchingService(args_store, &find_error);
315 if (find_error.ToDBusError(&error)) {
316 return "/"; // ensure return is syntactically valid
317 }
318
319 return service->GetRpcIdentifier();
320}
321
Paul Stewart8ae18742015-06-16 13:13:10 -0700322int32_t ManagerDBusAdaptor::GetDebugLevel(DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700323 SLOG(this, 2) << __func__;
Chris Masone7ccc8192011-05-24 14:54:49 -0700324 return logging::GetMinLogLevel();
Chris Masoned7732e42011-05-20 11:08:56 -0700325}
326
Paul Stewart8ae18742015-06-16 13:13:10 -0700327void ManagerDBusAdaptor::SetDebugLevel(const int32_t& level,
328 DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700329 SLOG(this, 2) << __func__ << ": " << level;
Ben Chanbc49ac72012-04-10 19:59:45 -0700330 if (level < logging::LOG_NUM_SEVERITIES) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700331 logging::SetMinLogLevel(level);
Ben Chanbc49ac72012-04-10 19:59:45 -0700332 // Like VLOG, SLOG uses negative verbose level.
333 ScopeLogger::GetInstance()->set_verbose_level(-level);
334 } else {
Chris Masone7ccc8192011-05-24 14:54:49 -0700335 LOG(WARNING) << "Ignoring attempt to set log level to " << level;
Ben Chanbc49ac72012-04-10 19:59:45 -0700336 }
Chris Masoned7732e42011-05-20 11:08:56 -0700337}
338
Paul Stewart8ae18742015-06-16 13:13:10 -0700339string ManagerDBusAdaptor::GetServiceOrder(DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700340 SLOG(this, 2) << __func__;
Paul Stewart22aa71b2011-09-16 12:15:11 -0700341 return manager_->GetTechnologyOrder();
Chris Masoned7732e42011-05-20 11:08:56 -0700342}
343
Paul Stewart8ae18742015-06-16 13:13:10 -0700344void ManagerDBusAdaptor::SetServiceOrder(const string& order,
345 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700346 SLOG(this, 2) << __func__ << ": " << order;
Paul Stewart22aa71b2011-09-16 12:15:11 -0700347 Error e;
348 manager_->SetTechnologyOrder(order, &e);
349 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700350}
351
Paul Stewart8ae18742015-06-16 13:13:10 -0700352string ManagerDBusAdaptor::GetDebugTags(DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700353 SLOG(this, 2) << __func__;
Ben Chanbc49ac72012-04-10 19:59:45 -0700354 return ScopeLogger::GetInstance()->GetEnabledScopeNames();
Elly Jones16227d32012-02-09 14:17:25 -0500355}
356
Paul Stewart8ae18742015-06-16 13:13:10 -0700357void ManagerDBusAdaptor::SetDebugTags(const string& tags,
358 DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700359 SLOG(this, 2) << __func__ << ": " << tags;
Ben Chanbc49ac72012-04-10 19:59:45 -0700360 ScopeLogger::GetInstance()->EnableScopesByName(tags);
Elly Jones16227d32012-02-09 14:17:25 -0500361}
362
Paul Stewart8ae18742015-06-16 13:13:10 -0700363string ManagerDBusAdaptor::ListDebugTags(DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700364 SLOG(this, 2) << __func__;
Ben Chanbc49ac72012-04-10 19:59:45 -0700365 return ScopeLogger::GetInstance()->GetAllScopeNames();
Elly Jones16227d32012-02-09 14:17:25 -0500366}
367
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700368map<string, DBus::Variant> ManagerDBusAdaptor::GetNetworksForGeolocation(
Paul Stewart8ae18742015-06-16 13:13:10 -0700369 DBus::Error& /*error*/) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700370 SLOG(this, 2) << __func__;
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700371 map<string, DBus::Variant> networks;
Paul Stewart8ae18742015-06-16 13:13:10 -0700372 for (const auto& network : manager_->GetNetworksForGeolocation()) {
Gaurav Shahb790aa22012-10-23 12:51:12 -0700373 Stringmaps value;
374 // Convert GeolocationInfos to their Stringmaps equivalent.
Paul Stewart8ae18742015-06-16 13:13:10 -0700375 for (const auto& info : network.second) {
Paul Stewart6db7b242014-05-02 15:34:21 -0700376 value.push_back(info.properties());
Gaurav Shahb790aa22012-10-23 12:51:12 -0700377 }
Paul Stewart6db7b242014-05-02 15:34:21 -0700378 networks[network.first] = StringmapsToVariant(value);
Gaurav Shahb790aa22012-10-23 12:51:12 -0700379 }
Gaurav Shah645bff82012-10-08 14:06:04 -0700380 return networks;
381}
382
Paul Stewart8ae18742015-06-16 13:13:10 -0700383bool ManagerDBusAdaptor::VerifyDestination(const string& certificate,
384 const string& public_key,
385 const string& nonce,
386 const string& signed_data,
387 const string& destination_udn,
388 const string& hotspot_ssid,
389 const string& hotspot_bssid,
390 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700391 SLOG(this, 2) << __func__;
Paul Stewart8ae18742015-06-16 13:13:10 -0700392 DBus::Tag* tag = new DBus::Tag();
Peter Qiu1a72f542015-04-14 16:31:36 -0700393#if !defined(DISABLE_WIFI)
394 Error e(Error::kOperationInitiated);
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800395 manager_->VerifyDestination(certificate, public_key, nonce,
396 signed_data, destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700397 hotspot_ssid, hotspot_bssid,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800398 GetBoolMethodReplyCallback(tag), &e);
Peter Qiu1a72f542015-04-14 16:31:36 -0700399#else
400 Error e(Error::kNotImplemented);
401#endif // DISABLE_WIFI
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800402 ReturnResultOrDefer(tag, e, &error);
403 CHECK(e.IsFailure()) << __func__ << " should only return directly on error.";
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800404 return false;
405}
406
407string ManagerDBusAdaptor::VerifyAndEncryptCredentials(
Paul Stewart8ae18742015-06-16 13:13:10 -0700408 const string& certificate,
409 const string& public_key,
410 const string& nonce,
411 const string& signed_data,
412 const string& destination_udn,
413 const string& hotspot_ssid,
414 const string& hotspot_bssid,
415 const DBus::Path& network,
416 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700417 SLOG(this, 2) << __func__;
Paul Stewart8ae18742015-06-16 13:13:10 -0700418 DBus::Tag* tag = new DBus::Tag();
Peter Qiu1a72f542015-04-14 16:31:36 -0700419#if !defined(DISABLE_WIFI)
420 Error e(Error::kOperationInitiated);
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800421 manager_->VerifyAndEncryptCredentials(certificate, public_key, nonce,
422 signed_data, destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700423 hotspot_ssid, hotspot_bssid,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800424 network,
425 GetStringMethodReplyCallback(tag),
426 &e);
Peter Qiu1a72f542015-04-14 16:31:36 -0700427#else
428 Error e(Error::kNotImplemented);
429#endif // DISABLE_WIFI
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800430 ReturnResultOrDefer(tag, e, &error);
431 CHECK(e.IsFailure()) << __func__ << " should only return directly on error.";
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800432 return "";
433}
434
435string ManagerDBusAdaptor::VerifyAndEncryptData(
Paul Stewart8ae18742015-06-16 13:13:10 -0700436 const string& certificate,
437 const string& public_key,
438 const string& nonce,
439 const string& signed_data,
440 const string& destination_udn,
441 const string& hotspot_ssid,
442 const string& hotspot_bssid,
443 const string& data,
444 DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700445 SLOG(this, 2) << __func__;
Paul Stewart8ae18742015-06-16 13:13:10 -0700446 DBus::Tag* tag = new DBus::Tag();
Peter Qiu1a72f542015-04-14 16:31:36 -0700447#if !defined(DISABLE_WIFI)
448 Error e(Error::kOperationInitiated);
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800449 manager_->VerifyAndEncryptData(certificate, public_key, nonce,
450 signed_data, destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700451 hotspot_ssid, hotspot_bssid,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800452 data, GetStringMethodReplyCallback(tag),
453 &e);
Peter Qiu1a72f542015-04-14 16:31:36 -0700454#else
455 Error e(Error::kNotImplemented);
456#endif // DISABLE_WIFI
457 ReturnResultOrDefer(tag, e, &error);
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800458 CHECK(e.IsFailure()) << __func__ << " should only return directly on error.";
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800459 return "";
460}
461
Paul Stewart8ae18742015-06-16 13:13:10 -0700462void ManagerDBusAdaptor::ConnectToBestServices(DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700463 SLOG(this, 2) << __func__;
Paul Stewart39db5ca2013-03-18 14:15:17 -0700464 Error e;
465 manager_->ConnectToBestServices(&e);
466 e.ToDBusError(&error);
467}
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800468
Paul Stewart8ae18742015-06-16 13:13:10 -0700469void ManagerDBusAdaptor::CreateConnectivityReport(DBus::Error& error) { // NOLINT
Rebecca Silbersteinc9c31d82014-10-21 15:01:00 -0700470 SLOG(this, 2) << __func__;
Rebecca Silberstein6862b382014-09-11 08:24:51 -0700471 Error e;
472 manager_->CreateConnectivityReport(&e);
473 e.ToDBusError(&error);
474}
475
Paul Stewart8ae18742015-06-16 13:13:10 -0700476void ManagerDBusAdaptor::ClaimInterface(const string& claimer_name,
477 const string& interface_name,
478 DBus::Error& error) { // NOLINT
Peter Qiu7e8b8ee2014-11-25 13:55:57 -0800479 SLOG(this, 2) << __func__;
480 Error e(Error::kOperationInitiated);
Paul Stewart8ae18742015-06-16 13:13:10 -0700481 DBus::Tag* tag = new DBus::Tag();
Peter Qiu1d499ed2015-01-30 16:01:27 -0800482 manager_->ClaimDevice(claimer_name,
Peter Qiu7e8b8ee2014-11-25 13:55:57 -0800483 interface_name,
484 &e,
485 GetMethodReplyCallback(tag));
486 ReturnResultOrDefer(tag, e, &error);
487}
488
Paul Stewart8ae18742015-06-16 13:13:10 -0700489void ManagerDBusAdaptor::ReleaseInterface(const string& claimer_name,
490 const string& interface_name,
491 DBus::Error& error) { // NOLINT
Peter Qiu7e8b8ee2014-11-25 13:55:57 -0800492 SLOG(this, 2) << __func__;
493 Error e;
Peter Qiu1d499ed2015-01-30 16:01:27 -0800494 manager_->ReleaseDevice(claimer_name, interface_name, &e);
Peter Qiu7e8b8ee2014-11-25 13:55:57 -0800495 e.ToDBusError(&error);
496}
497
Paul Stewart8ae18742015-06-16 13:13:10 -0700498void ManagerDBusAdaptor::SetSchedScan(const bool& enable,
499 DBus::Error& error) { // NOLINT
Peter Qiud51b2442015-02-23 10:41:38 -0800500 SLOG(this, 2) << __func__ << ": " << enable;
501 Error e;
502 manager_->SetSchedScan(enable, &e);
503 e.ToDBusError(&error);
504}
505
Chris Masoned7732e42011-05-20 11:08:56 -0700506} // namespace shill