summaryrefslogtreecommitdiffstats
path: root/hcid/plugin.c
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2008-05-01 13:52:26 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2008-05-01 13:52:26 +0000
commit9491a544f622e40453265c30f24ce44a61440cc1 (patch)
tree2c00a3c63c9f021444a6b89f6f22369bf3a3073f /hcid/plugin.c
parent3f8860031e5241fbb145fdd71e1a46c2c28f393e (diff)
Moving authorization code to dbus-service.c
Diffstat (limited to 'hcid/plugin.c')
-rw-r--r--hcid/plugin.c116
1 files changed, 3 insertions, 113 deletions
diff --git a/hcid/plugin.c b/hcid/plugin.c
index 6cc54de1..2a8f4375 100644
--- a/hcid/plugin.c
+++ b/hcid/plugin.c
@@ -33,18 +33,12 @@
#include <errno.h>
#include <bluetooth/bluetooth.h>
-#include <bluetooth/hci.h>
-#include <bluetooth/hci_lib.h>
-#include <dbus/dbus.h>
-#include "dbus-helper.h"
+#include "dbus.h"
+#include "logging.h"
+
#include "dbus-service.h"
-#include "adapter.h"
-#include "dbus-hci.h"
-#include "agent.h"
#include "plugin.h"
-#include "device.h"
-#include "logging.h"
static GSList *plugins = NULL;
@@ -53,11 +47,6 @@ struct bluetooth_plugin {
struct bluetooth_plugin_desc *desc;
};
-struct plugin_auth {
- plugin_auth_cb cb;
- void *user_data;
-};
-
static gboolean add_plugin(GModule *module, struct bluetooth_plugin_desc *desc)
{
struct bluetooth_plugin *plugin;
@@ -162,102 +151,3 @@ void plugin_cleanup(void)
g_slist_free(plugins);
}
-
-static struct adapter *ba2adapter(bdaddr_t *src)
-{
- DBusConnection *conn = get_dbus_connection();
- struct adapter *adapter = NULL;
- char address[18], path[6];
- int dev_id;
-
- ba2str(src, address);
- dev_id = hci_devid(address);
- if (dev_id < 0)
- return NULL;
-
- /* FIXME: id2adapter? Create a list of adapters? */
- snprintf(path, sizeof(path), "/hci%d", dev_id);
- if (dbus_connection_get_object_user_data(conn,
- path, (void *) &adapter) == FALSE)
- return NULL;
-
- return adapter;
-}
-
-static void agent_auth_cb(struct agent *agent, DBusError *derr, void *user_data)
-{
- struct plugin_auth *auth = user_data;
-
- auth->cb(derr, auth->user_data);
-
- g_free(auth);
-}
-
-int plugin_req_auth(bdaddr_t *src, bdaddr_t *dst,
- const char *uuid, plugin_auth_cb cb, void *user_data)
-{
- struct plugin_auth *auth;
- struct adapter *adapter;
- struct device *device;
- struct agent *agent;
- char address[18];
-
- adapter = ba2adapter(src);
- if (!adapter)
- return -EPERM;
-
- /* Device connected? */
- if (!g_slist_find_custom(adapter->active_conn,
- dst, active_conn_find_by_bdaddr))
- return -ENOTCONN;
-
- ba2str(dst, address);
- device = adapter_find_device(adapter, address);
- if (!device)
- return -EPERM;
-
- if (!search_service_by_uuid(uuid))
- return -EPERM;
-
- /* FIXME: Missing check trusted file entries */
-
- agent = (device->agent ? : adapter->agent);
- if (!agent)
- return -EPERM;
-
- auth = g_try_new0(struct plugin_auth, 1);
- if (!auth)
- return -ENOMEM;
-
- auth->cb = cb;
- auth->user_data = user_data;
-
- return agent_authorize(agent, device->path, uuid, agent_auth_cb, auth);
-}
-
-int plugin_cancel_auth(bdaddr_t *src)
-{
- struct adapter *adapter = ba2adapter(src);
- struct device *device;
- struct agent *agent;
- char address[18];
-
- if (!adapter)
- return -EPERM;
-
- ba2str(src, address);
- device = adapter_find_device(adapter, address);
- if (!device)
- return -EPERM;
-
- /*
- * FIXME: Cancel fails if authorization is requested to adapter's
- * agent and in the meanwhile CreatePairedDevice is called.
- */
-
- agent = (device->agent ? : adapter->agent);
- if (!agent)
- return -EPERM;
-
- return agent_cancel(agent);
-}