blob: 9a66e9ef6ac30b1450016876cc5f6ae37dee7c9e [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"
mukesh agrawal7a4e4002011-09-06 11:26:05 -070020#include "shill/wifi_service.h"
Chris Masone7ccc8192011-05-24 14:54:49 -070021
Chris Masoned7732e42011-05-20 11:08:56 -070022using std::map;
23using std::string;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070024using std::vector;
Chris Masoned7732e42011-05-20 11:08:56 -070025
26namespace shill {
27
Chris Masoned7732e42011-05-20 11:08:56 -070028// static
Chris Masone19e30402011-07-19 15:48:47 -070029const char ManagerDBusAdaptor::kPath[] = "/";
Chris Masoned7732e42011-05-20 11:08:56 -070030
Ben Chan3f4d4ee2014-09-09 07:41:33 -070031ManagerDBusAdaptor::ManagerDBusAdaptor(DBus::Connection *conn, Manager *manager)
Chris Masoned7732e42011-05-20 11:08:56 -070032 : DBusAdaptor(conn, kPath),
33 manager_(manager) {
34}
Chris Masoneec6b18b2011-06-08 14:09:10 -070035
36ManagerDBusAdaptor::~ManagerDBusAdaptor() {
Ben Chancc225ef2014-09-30 13:26:51 -070037 manager_ = nullptr;
Chris Masoneec6b18b2011-06-08 14:09:10 -070038}
Chris Masoned7732e42011-05-20 11:08:56 -070039
40void ManagerDBusAdaptor::UpdateRunning() {}
41
Chris Masone8fe2c7e2011-06-09 15:51:19 -070042void ManagerDBusAdaptor::EmitBoolChanged(const string &name, bool value) {
mukesh agrawal06175d72012-04-23 16:46:01 -070043 SLOG(DBus, 2) << __func__ << ": " << name;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070044 PropertyChanged(name, DBusAdaptor::BoolToVariant(value));
45}
46
Chris Masone8fe2c7e2011-06-09 15:51:19 -070047void ManagerDBusAdaptor::EmitUintChanged(const string &name,
Ben Chan7fab8972014-08-10 17:14:46 -070048 uint32_t value) {
mukesh agrawal06175d72012-04-23 16:46:01 -070049 SLOG(DBus, 2) << __func__ << ": " << name;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070050 PropertyChanged(name, DBusAdaptor::Uint32ToVariant(value));
Chris Masoned0ceb8c2011-06-02 10:05:39 -070051}
52
Chris Masone8fe2c7e2011-06-09 15:51:19 -070053void ManagerDBusAdaptor::EmitIntChanged(const string &name, int value) {
mukesh agrawal06175d72012-04-23 16:46:01 -070054 SLOG(DBus, 2) << __func__ << ": " << name;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070055 PropertyChanged(name, DBusAdaptor::Int32ToVariant(value));
Chris Masoned0ceb8c2011-06-02 10:05:39 -070056}
57
Chris Masone8fe2c7e2011-06-09 15:51:19 -070058void ManagerDBusAdaptor::EmitStringChanged(const string &name,
59 const string &value) {
mukesh agrawal06175d72012-04-23 16:46:01 -070060 SLOG(DBus, 2) << __func__ << ": " << name;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070061 PropertyChanged(name, DBusAdaptor::StringToVariant(value));
62}
63
Gaurav Shah435de2c2011-11-17 19:01:07 -080064void ManagerDBusAdaptor::EmitStringsChanged(const string &name,
65 const vector<string> &value) {
mukesh agrawal06175d72012-04-23 16:46:01 -070066 SLOG(DBus, 2) << __func__ << ": " << name;
Gaurav Shah435de2c2011-11-17 19:01:07 -080067 PropertyChanged(name, DBusAdaptor::StringsToVariant(value));
68}
69
Paul Stewart49739c02012-08-08 17:24:03 -070070void ManagerDBusAdaptor::EmitRpcIdentifierChanged(
71 const string &name,
72 const string &value) {
73 SLOG(DBus, 2) << __func__ << ": " << name;
74 PropertyChanged(name, DBusAdaptor::PathToVariant(value));
75}
76
mukesh agrawal32399322011-09-01 10:53:43 -070077void ManagerDBusAdaptor::EmitRpcIdentifierArrayChanged(
78 const string &name,
79 const vector<string> &value) {
mukesh agrawal06175d72012-04-23 16:46:01 -070080 SLOG(DBus, 2) << __func__ << ": " << name;
Ben Chane2ee5e02014-09-19 19:29:42 -070081 vector<DBus::Path> paths;
Paul Stewart6db7b242014-05-02 15:34:21 -070082 for (const auto &element : value) {
83 paths.push_back(element);
mukesh agrawal32399322011-09-01 10:53:43 -070084 }
85
mukesh agrawal2366eed2012-03-20 18:21:50 -070086 PropertyChanged(name, DBusAdaptor::PathsToVariant(paths));
mukesh agrawal32399322011-09-01 10:53:43 -070087}
88
Chris Masone8fe2c7e2011-06-09 15:51:19 -070089void ManagerDBusAdaptor::EmitStateChanged(const string &new_state) {
mukesh agrawal06175d72012-04-23 16:46:01 -070090 SLOG(DBus, 2) << __func__;
Chris Masoned0ceb8c2011-06-02 10:05:39 -070091 StateChanged(new_state);
92}
93
Ben Chan3f4d4ee2014-09-09 07:41:33 -070094map<string, DBus::Variant> ManagerDBusAdaptor::GetProperties(
95 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -070096 SLOG(DBus, 2) << __func__;
Ben Chan3f4d4ee2014-09-09 07:41:33 -070097 map<string, DBus::Variant> properties;
Chris Masone27c4aa52011-07-02 13:10:14 -070098 DBusAdaptor::GetProperties(manager_->store(), &properties, &error);
Chris Masonea8a2c252011-06-27 22:16:30 -070099 return properties;
Chris Masoned7732e42011-05-20 11:08:56 -0700100}
101
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700102void ManagerDBusAdaptor::SetProperty(const string &name,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700103 const DBus::Variant &value,
104 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700105 SLOG(DBus, 2) << __func__ << ": " << name;
mukesh agrawal6bb9e7c2012-01-30 14:57:54 -0800106 if (DBusAdaptor::SetProperty(manager_->mutable_store(),
107 name,
108 value,
109 &error)) {
Chris Masone3bd3c8c2011-06-13 08:20:26 -0700110 PropertyChanged(name, value);
111 }
Chris Masoned7732e42011-05-20 11:08:56 -0700112}
113
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700114string ManagerDBusAdaptor::GetState(DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700115 SLOG(DBus, 2) << __func__;
Ben Chancc225ef2014-09-30 13:26:51 -0700116 return manager_->CalculateState(nullptr);
Chris Masoned7732e42011-05-20 11:08:56 -0700117}
118
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700119DBus::Path ManagerDBusAdaptor::CreateProfile(const string &name,
120 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700121 SLOG(DBus, 2) << __func__ << ": " << name;
Paul Stewart19c871d2011-12-15 16:10:13 -0800122 Error e;
123 string path;
124 manager_->CreateProfile(name, &path, &e);
Paul Stewartf3eced92013-04-17 12:18:22 -0700125 if (e.ToDBusError(&error)) {
126 return "/";
127 }
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700128 return DBus::Path(path);
Chris Masoned7732e42011-05-20 11:08:56 -0700129}
130
Paul Stewarte73d05c2012-03-29 16:26:05 -0700131void ManagerDBusAdaptor::RemoveProfile(const string &name,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700132 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700133 SLOG(DBus, 2) << __func__ << ": " << name;
Paul Stewarte73d05c2012-03-29 16:26:05 -0700134 Error e;
135 manager_->RemoveProfile(name, &e);
136 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700137}
138
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700139DBus::Path ManagerDBusAdaptor::PushProfile(const string &name,
140 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700141 SLOG(DBus, 2) << __func__ << ": " << name;
Paul Stewart19c871d2011-12-15 16:10:13 -0800142 Error e;
143 string path;
144 manager_->PushProfile(name, &path, &e);
Paul Stewartf3eced92013-04-17 12:18:22 -0700145 if (e.ToDBusError(&error)) {
146 return "/";
147 }
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700148 return DBus::Path(path);
Paul Stewartf3eced92013-04-17 12:18:22 -0700149}
150
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700151DBus::Path ManagerDBusAdaptor::InsertUserProfile(
152 const string &name,
153 const string &user_hash,
154 DBus::Error &error) { // NOLINT
Paul Stewartf3eced92013-04-17 12:18:22 -0700155 SLOG(DBus, 2) << __func__ << ": " << name;
156 Error e;
157 string path;
158 manager_->InsertUserProfile(name, user_hash, &path, &e);
159 if (e.ToDBusError(&error)) {
160 return "/";
161 }
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700162 return DBus::Path(path);
Chris Masoneccc88812011-06-08 18:00:10 -0700163}
164
Paul Stewartd2e1c362013-03-03 19:06:07 -0800165void ManagerDBusAdaptor::PopProfile(const string &name,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700166 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700167 SLOG(DBus, 2) << __func__ << ": " << name;
Paul Stewart19c871d2011-12-15 16:10:13 -0800168 Error e;
169 manager_->PopProfile(name, &e);
170 e.ToDBusError(&error);
Chris Masoneccc88812011-06-08 18:00:10 -0700171}
172
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700173void ManagerDBusAdaptor::PopAnyProfile(DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700174 SLOG(DBus, 2) << __func__;
Paul Stewart19c871d2011-12-15 16:10:13 -0800175 Error e;
176 manager_->PopAnyProfile(&e);
177 e.ToDBusError(&error);
Chris Masoneccc88812011-06-08 18:00:10 -0700178}
179
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700180void ManagerDBusAdaptor::PopAllUserProfiles(DBus::Error &error) { // NOLINT
Paul Stewart307c2502013-03-23 12:32:10 -0700181 SLOG(DBus, 2) << __func__;
182 Error e;
183 manager_->PopAllUserProfiles(&e);
184 e.ToDBusError(&error);
185}
186
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700187void ManagerDBusAdaptor::RecheckPortal(DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700188 SLOG(DBus, 2) << __func__;
Paul Stewartc681fa02012-03-02 19:40:04 -0800189 Error e;
190 manager_->RecheckPortal(&e);
191 e.ToDBusError(&error);
192}
193
mukesh agrawal32399322011-09-01 10:53:43 -0700194void ManagerDBusAdaptor::RequestScan(const string &technology,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700195 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700196 SLOG(DBus, 2) << __func__ << ": " << technology;
mukesh agrawal32399322011-09-01 10:53:43 -0700197 Error e;
Wade Guthrie68d41092013-04-02 12:56:02 -0700198 manager_->RequestScan(Device::kFullScan, technology, &e);
mukesh agrawal32399322011-09-01 10:53:43 -0700199 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700200}
201
Eric Shienbrood9a245532012-03-07 14:20:39 -0500202void ManagerDBusAdaptor::EnableTechnology(const string &technology_name,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700203 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700204 SLOG(DBus, 2) << __func__ << ": " << technology_name;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500205 Error e(Error::kOperationInitiated);
206 DBus::Tag *tag = new DBus::Tag();
mukesh agrawal46c27cc2013-07-10 16:39:10 -0700207 manager_->SetEnabledStateForTechnology(technology_name, true, &e,
208 GetMethodReplyCallback(tag));
Eric Shienbrood9a245532012-03-07 14:20:39 -0500209 ReturnResultOrDefer(tag, e, &error);
Chris Masoned7732e42011-05-20 11:08:56 -0700210}
211
Eric Shienbrood9a245532012-03-07 14:20:39 -0500212void ManagerDBusAdaptor::DisableTechnology(const string &technology_name,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700213 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700214 SLOG(DBus, 2) << __func__ << ": " << technology_name;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500215 Error e(Error::kOperationInitiated);
216 DBus::Tag *tag = new DBus::Tag();
mukesh agrawal46c27cc2013-07-10 16:39:10 -0700217 manager_->SetEnabledStateForTechnology(technology_name, false, &e,
218 GetMethodReplyCallback(tag));
Eric Shienbrood9a245532012-03-07 14:20:39 -0500219 ReturnResultOrDefer(tag, e, &error);
Chris Masoned7732e42011-05-20 11:08:56 -0700220}
221
Darin Petkovb65c2452012-02-23 15:17:06 +0100222// Called, e.g., to get WiFiService handle for a hidden SSID.
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700223DBus::Path ManagerDBusAdaptor::GetService(
224 const map<string, DBus::Variant> &args,
225 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700226 SLOG(DBus, 2) << __func__;
Darin Petkovb65c2452012-02-23 15:17:06 +0100227 ServiceRefPtr service;
228 KeyValueStore args_store;
229 Error e;
230 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &e);
231 if (e.IsSuccess()) {
232 service = manager_->GetService(args_store, &e);
233 }
234 if (e.ToDBusError(&error)) {
235 return "/"; // ensure return is syntactically valid
236 }
237 return service->GetRpcIdentifier();
Chris Masoned7732e42011-05-20 11:08:56 -0700238}
239
Darin Petkovb65c2452012-02-23 15:17:06 +0100240// Obsolete, use GetService instead.
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700241DBus::Path ManagerDBusAdaptor::GetVPNService(
242 const map<string, DBus::Variant> &args,
243 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700244 SLOG(DBus, 2) << __func__;
Darin Petkovb65c2452012-02-23 15:17:06 +0100245 return GetService(args, error);
246}
247
248// Obsolete, use GetService instead.
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700249DBus::Path ManagerDBusAdaptor::GetWifiService(
250 const map<string, DBus::Variant> &args,
251 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700252 SLOG(DBus, 2) << __func__;
Darin Petkovb65c2452012-02-23 15:17:06 +0100253 return GetService(args, error);
Chris Masoned7732e42011-05-20 11:08:56 -0700254}
255
Paul Stewart7f61e522012-03-22 11:13:45 -0700256
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700257DBus::Path ManagerDBusAdaptor::ConfigureService(
258 const map<string, DBus::Variant> &args,
259 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700260 SLOG(DBus, 2) << __func__;
Paul Stewartd39d6922012-12-21 08:59:57 -0800261 ServiceRefPtr service;
Paul Stewart7f61e522012-03-22 11:13:45 -0700262 KeyValueStore args_store;
Paul Stewartd39d6922012-12-21 08:59:57 -0800263 Error key_value_store_error;
264 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &key_value_store_error);
265 if (key_value_store_error.ToDBusError(&error)) {
266 return "/"; // ensure return is syntactically valid.
Paul Stewart7f61e522012-03-22 11:13:45 -0700267 }
Paul Stewartd39d6922012-12-21 08:59:57 -0800268 Error configure_error;
269 service = manager_->ConfigureService(args_store, &configure_error);
270 if (configure_error.ToDBusError(&error)) {
271 return "/"; // ensure return is syntactically valid.
272 }
273 return service->GetRpcIdentifier();
Chris Masoned7732e42011-05-20 11:08:56 -0700274}
275
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700276DBus::Path ManagerDBusAdaptor::ConfigureServiceForProfile(
277 const DBus::Path &profile_rpcid,
278 const map<string, DBus::Variant> &args,
279 DBus::Error &error) { // NOLINT
Paul Stewartd2e1c362013-03-03 19:06:07 -0800280 SLOG(DBus, 2) << __func__;
281 ServiceRefPtr service;
282 KeyValueStore args_store;
283 Error key_value_store_error;
284 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &key_value_store_error);
285 if (key_value_store_error.ToDBusError(&error)) {
286 return "/"; // ensure return is syntactically valid.
287 }
288 Error configure_error;
289 service = manager_->ConfigureServiceForProfile(
290 profile_rpcid, args_store, &configure_error);
291 if (!service || configure_error.ToDBusError(&error)) {
292 return "/"; // ensure return is syntactically valid.
293 }
294 return service->GetRpcIdentifier();
295}
296
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700297DBus::Path ManagerDBusAdaptor::FindMatchingService(
298 const map<string, DBus::Variant> &args,
299 DBus::Error &error) { // NOLINT
Paul Stewart7a20aa42013-01-17 12:21:41 -0800300 SLOG(DBus, 2) << __func__;
301 KeyValueStore args_store;
302 Error value_error;
303 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &value_error);
304 if (value_error.ToDBusError(&error)) {
305 return "/"; // ensure return is syntactically valid
306 }
307
308 Error find_error;
309 ServiceRefPtr service =
310 manager_->FindMatchingService(args_store, &find_error);
311 if (find_error.ToDBusError(&error)) {
312 return "/"; // ensure return is syntactically valid
313 }
314
315 return service->GetRpcIdentifier();
316}
317
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700318void ManagerDBusAdaptor::AddWakeOnPacketConnection(
319 const string &ip_endpoint,
320 DBus::Error &error) { // NOLINT
Samuel Tanfe734672014-08-07 15:50:48 -0700321 SLOG(DBus, 2) << __func__;
322 Error e;
Samuel Tanc863d062014-08-14 17:52:16 -0700323 manager_->AddWakeOnPacketConnection(ip_endpoint, &e);
Samuel Tanfe734672014-08-07 15:50:48 -0700324 e.ToDBusError(&error);
325}
326
327void ManagerDBusAdaptor::RemoveWakeOnPacketConnection(
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700328 const string &ip_endpoint, DBus::Error &error) { // NOLINT
Samuel Tanfe734672014-08-07 15:50:48 -0700329 SLOG(DBus, 2) << __func__;
330 Error e;
Samuel Tanc863d062014-08-14 17:52:16 -0700331 manager_->RemoveWakeOnPacketConnection(ip_endpoint, &e);
Samuel Tanfe734672014-08-07 15:50:48 -0700332 e.ToDBusError(&error);
333}
334
335void ManagerDBusAdaptor::RemoveAllWakeOnPacketConnections(
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700336 DBus::Error &error) { // NOLINT
Samuel Tanfe734672014-08-07 15:50:48 -0700337 SLOG(DBus, 2) << __func__;
338 Error e;
339 manager_->RemoveAllWakeOnPacketConnections(&e);
340 e.ToDBusError(&error);
341}
342
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700343int32_t ManagerDBusAdaptor::GetDebugLevel(DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700344 SLOG(DBus, 2) << __func__;
Chris Masone7ccc8192011-05-24 14:54:49 -0700345 return logging::GetMinLogLevel();
Chris Masoned7732e42011-05-20 11:08:56 -0700346}
347
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700348void ManagerDBusAdaptor::SetDebugLevel(const int32_t &level,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700349 DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700350 SLOG(DBus, 2) << __func__ << ": " << level;
Ben Chanbc49ac72012-04-10 19:59:45 -0700351 if (level < logging::LOG_NUM_SEVERITIES) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700352 logging::SetMinLogLevel(level);
Ben Chanbc49ac72012-04-10 19:59:45 -0700353 // Like VLOG, SLOG uses negative verbose level.
354 ScopeLogger::GetInstance()->set_verbose_level(-level);
355 } else {
Chris Masone7ccc8192011-05-24 14:54:49 -0700356 LOG(WARNING) << "Ignoring attempt to set log level to " << level;
Ben Chanbc49ac72012-04-10 19:59:45 -0700357 }
Chris Masoned7732e42011-05-20 11:08:56 -0700358}
359
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700360string ManagerDBusAdaptor::GetServiceOrder(DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700361 SLOG(DBus, 2) << __func__;
Paul Stewart22aa71b2011-09-16 12:15:11 -0700362 return manager_->GetTechnologyOrder();
Chris Masoned7732e42011-05-20 11:08:56 -0700363}
364
Paul Stewart22aa71b2011-09-16 12:15:11 -0700365void ManagerDBusAdaptor::SetServiceOrder(const string &order,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700366 DBus::Error &error) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700367 SLOG(DBus, 2) << __func__ << ": " << order;
Paul Stewart22aa71b2011-09-16 12:15:11 -0700368 Error e;
369 manager_->SetTechnologyOrder(order, &e);
370 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700371}
372
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700373string ManagerDBusAdaptor::GetDebugTags(DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700374 SLOG(DBus, 2) << __func__;
Ben Chanbc49ac72012-04-10 19:59:45 -0700375 return ScopeLogger::GetInstance()->GetEnabledScopeNames();
Elly Jones16227d32012-02-09 14:17:25 -0500376}
377
Paul Stewartd2e1c362013-03-03 19:06:07 -0800378void ManagerDBusAdaptor::SetDebugTags(const string &tags,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700379 DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700380 SLOG(DBus, 2) << __func__ << ": " << tags;
Ben Chanbc49ac72012-04-10 19:59:45 -0700381 ScopeLogger::GetInstance()->EnableScopesByName(tags);
Elly Jones16227d32012-02-09 14:17:25 -0500382}
383
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700384string ManagerDBusAdaptor::ListDebugTags(DBus::Error &/*error*/) { // NOLINT
mukesh agrawal06175d72012-04-23 16:46:01 -0700385 SLOG(DBus, 2) << __func__;
Ben Chanbc49ac72012-04-10 19:59:45 -0700386 return ScopeLogger::GetInstance()->GetAllScopeNames();
Elly Jones16227d32012-02-09 14:17:25 -0500387}
388
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700389map<string, DBus::Variant> ManagerDBusAdaptor::GetNetworksForGeolocation(
390 DBus::Error &/*error*/) { // NOLINT
Gaurav Shah645bff82012-10-08 14:06:04 -0700391 SLOG(DBus, 2) << __func__;
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700392 map<string, DBus::Variant> networks;
Paul Stewart6db7b242014-05-02 15:34:21 -0700393 for (const auto &network : manager_->GetNetworksForGeolocation()) {
Gaurav Shahb790aa22012-10-23 12:51:12 -0700394 Stringmaps value;
395 // Convert GeolocationInfos to their Stringmaps equivalent.
Alex Vakulenko8a532292014-06-16 17:18:44 -0700396 for (const auto &info : network.second) {
Paul Stewart6db7b242014-05-02 15:34:21 -0700397 value.push_back(info.properties());
Gaurav Shahb790aa22012-10-23 12:51:12 -0700398 }
Paul Stewart6db7b242014-05-02 15:34:21 -0700399 networks[network.first] = StringmapsToVariant(value);
Gaurav Shahb790aa22012-10-23 12:51:12 -0700400 }
Gaurav Shah645bff82012-10-08 14:06:04 -0700401 return networks;
402}
403
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800404bool ManagerDBusAdaptor::VerifyDestination(const string &certificate,
405 const string &public_key,
406 const string &nonce,
407 const string &signed_data,
408 const string &destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700409 const string &hotspot_ssid,
410 const string &hotspot_bssid,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700411 DBus::Error &error) { // NOLINT
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800412 SLOG(DBus, 2) << __func__;
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800413 Error e(Error::kOperationInitiated);
414 DBus::Tag *tag = new DBus::Tag();
415 manager_->VerifyDestination(certificate, public_key, nonce,
416 signed_data, destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700417 hotspot_ssid, hotspot_bssid,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800418 GetBoolMethodReplyCallback(tag), &e);
419 ReturnResultOrDefer(tag, e, &error);
420 CHECK(e.IsFailure()) << __func__ << " should only return directly on error.";
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800421 return false;
422}
423
424string ManagerDBusAdaptor::VerifyAndEncryptCredentials(
425 const string &certificate,
426 const string &public_key,
427 const string &nonce,
428 const string &signed_data,
429 const string &destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700430 const string &hotspot_ssid,
431 const string &hotspot_bssid,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700432 const DBus::Path &network,
433 DBus::Error &error) { // NOLINT
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800434 SLOG(DBus, 2) << __func__;
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800435 Error e(Error::kOperationInitiated);
436 DBus::Tag *tag = new DBus::Tag();
437 manager_->VerifyAndEncryptCredentials(certificate, public_key, nonce,
438 signed_data, destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700439 hotspot_ssid, hotspot_bssid,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800440 network,
441 GetStringMethodReplyCallback(tag),
442 &e);
443 ReturnResultOrDefer(tag, e, &error);
444 CHECK(e.IsFailure()) << __func__ << " should only return directly on error.";
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800445 return "";
446}
447
448string ManagerDBusAdaptor::VerifyAndEncryptData(
449 const string &certificate,
450 const string &public_key,
451 const string &nonce,
452 const string &signed_data,
453 const string &destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700454 const string &hotspot_ssid,
455 const string &hotspot_bssid,
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800456 const string &data,
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700457 DBus::Error &error) { // NOLINT
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800458 SLOG(DBus, 2) << __func__;
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800459 Error e(Error::kOperationInitiated);
460 DBus::Tag *tag = new DBus::Tag();
461 manager_->VerifyAndEncryptData(certificate, public_key, nonce,
462 signed_data, destination_udn,
Christopher Wileycdde79f2013-05-01 14:26:56 -0700463 hotspot_ssid, hotspot_bssid,
Christopher Wiley0d9cf0c2013-02-19 19:24:57 -0800464 data, GetStringMethodReplyCallback(tag),
465 &e);
466 ReturnResultOrDefer(tag, e, &error);
467 CHECK(e.IsFailure()) << __func__ << " should only return directly on error.";
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800468 return "";
469}
470
Ben Chan3f4d4ee2014-09-09 07:41:33 -0700471void ManagerDBusAdaptor::ConnectToBestServices(DBus::Error &error) { // NOLINT
Darin Petkovcbe9c392013-04-11 11:52:35 +0200472 SLOG(DBus, 2) << __func__;
Paul Stewart39db5ca2013-03-18 14:15:17 -0700473 Error e;
474 manager_->ConnectToBestServices(&e);
475 e.ToDBusError(&error);
476}
Christopher Wiley3d5ab402013-02-15 13:25:58 -0800477
Rebecca Silberstein6862b382014-09-11 08:24:51 -0700478void ManagerDBusAdaptor::CreateConnectivityReport(DBus::Error &error) { // NOLINT
479 SLOG(DBus, 2) << __func__;
480 Error e;
481 manager_->CreateConnectivityReport(&e);
482 e.ToDBusError(&error);
483}
484
Chris Masoned7732e42011-05-20 11:08:56 -0700485} // namespace shill