summaryrefslogtreecommitdiffstats
path: root/network/manager.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-06-20 20:23:35 +0000
committerLuiz Augusto von Dentz <luiz.dentz@openbossa.org>2007-06-20 20:23:35 +0000
commit3a653f915b0e7de28e111665ba40b69ae6d6a235 (patch)
tree7865b048eae5fa79af6a344c042b15b255d8e420 /network/manager.c
parentfbba4be5b162fdffe8e12e3b1e0fa11629436600 (diff)
Remove CreateServer and RemoveServer, servers are always create.
Diffstat (limited to 'network/manager.c')
-rw-r--r--network/manager.c110
1 files changed, 44 insertions, 66 deletions
diff --git a/network/manager.c b/network/manager.c
index c27d01c5..148dd444 100644
--- a/network/manager.c
+++ b/network/manager.c
@@ -45,7 +45,6 @@
#include "logging.h"
#include "textfile.h"
-#define NETWORK_PATH "/org/bluez/network"
#define NETWORK_MANAGER_INTERFACE "org.bluez.network.Manager"
#include "error.h"
@@ -55,8 +54,6 @@
#include "connection.h"
#include "common.h"
-#define MAX_PATH_LENGTH 64 /* D-Bus path */
-
struct pending_reply {
DBusConnection *conn;
DBusMessage *msg;
@@ -197,8 +194,6 @@ static DBusHandlerResult remove_path(DBusConnection *conn,
connection_store(conn, dpath, TRUE);
}
}
- else
- server_remove_stored(conn, path);
g_free(l->data);
*list = g_slist_remove(*list, l->data);
@@ -407,57 +402,6 @@ static DBusHandlerResult list_servers(DBusConnection *conn, DBusMessage *msg,
return list_paths(conn, msg, server_paths);
}
-static DBusHandlerResult create_server(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- char path[MAX_PATH_LENGTH];
- DBusError derr;
- const char *str;
- bdaddr_t src;
- uint16_t id;
- int dev_id;
-
- dbus_error_init(&derr);
- if (!dbus_message_get_args(msg, &derr,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INVALID)) {
- err_invalid_args(conn, msg, derr.message);
- dbus_error_free(&derr);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- id = bnep_service_id(str);
- if ((id != BNEP_SVC_GN) && (id != BNEP_SVC_NAP))
- return err_invalid_args(conn, msg, "Not supported");
-
- snprintf(path, MAX_PATH_LENGTH, NETWORK_PATH"/%s%d",
- bnep_name(id), net_uid++);
-
- if (g_slist_find_custom(server_paths, path,
- (GCompareFunc) strcmp)) {
- err_already_exists(conn, msg, "Server Already exists");
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- bacpy(&src, BDADDR_ANY);
-
- dev_id = hci_get_route(NULL);
-
- if (dev_id >= 0)
- hci_devba(dev_id, &src);
-
- if (server_register(conn, path, &src, id) < 0)
- return err_failed(conn, msg,
- "D-Bus path registration failed");
-
- if (bacmp(&src, BDADDR_ANY) != 0)
- server_store(conn, path);
-
- server_paths = g_slist_append(server_paths, g_strdup(path));
-
- return create_path(conn, msg, path, "ServerCreated");
-}
-
static DBusHandlerResult find_server(DBusConnection *conn,
DBusMessage *msg, void *data)
{
@@ -497,12 +441,6 @@ static DBusHandlerResult find_server(DBusConnection *conn,
return send_message_and_unref(conn, reply);
}
-static DBusHandlerResult remove_server(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- return remove_path(conn, msg, &server_paths, "ServerRemoved");
-}
-
static DBusHandlerResult list_connections(DBusConnection *conn,
DBusMessage *msg, void *data)
{
@@ -867,6 +805,34 @@ static void register_connections_stored(const char *adapter)
}
}
+static void register_server(uint16_t id)
+{
+ char path[MAX_PATH_LENGTH];
+ bdaddr_t src;
+ int dev_id;
+
+ snprintf(path, MAX_PATH_LENGTH, NETWORK_PATH"/%s", bnep_name(id));
+
+ if (g_slist_find_custom(server_paths, path,
+ (GCompareFunc) strcmp))
+ return;
+
+ bacpy(&src, BDADDR_ANY);
+
+ dev_id = hci_get_route(NULL);
+
+ if (dev_id >= 0)
+ hci_devba(dev_id, &src);
+
+ if (server_register(connection, path, &src, id) < 0)
+ return;
+
+ if (bacmp(&src, BDADDR_ANY) != 0)
+ server_store(connection, path);
+
+ server_paths = g_slist_append(server_paths, g_strdup(path));
+}
+
static void register_servers_stored(const char *adapter, const char *profile)
{
char filename[PATH_MAX + 1];
@@ -877,8 +843,10 @@ static void register_servers_stored(const char *adapter, const char *profile)
if (strcmp(profile, "nap") == 0)
id = BNEP_SVC_NAP;
- else
+ else if (strcmp(profile, "gn") == 0)
id = BNEP_SVC_GN;
+ else
+ id = BNEP_SVC_PANU;
create_name(filename, PATH_MAX, STORAGEDIR, adapter, profile);
@@ -886,7 +854,7 @@ static void register_servers_stored(const char *adapter, const char *profile)
if (stat (filename, &s) == 0 && (s.st_mode & __S_IFREG)) {
snprintf(path, MAX_PATH_LENGTH,
- NETWORK_PATH"/%s%d", profile, net_uid++);
+ NETWORK_PATH"/%s", profile);
if (server_register_from_file(connection, path,
&src, id, filename) == 0) {
server_paths = g_slist_append(server_paths,
@@ -919,6 +887,9 @@ static void register_stored(void)
/* GN objects */
register_servers_stored(de->d_name, "gn");
+
+ /* PANU objects */
+ register_servers_stored(de->d_name, "panu");
}
closedir(dir);
@@ -926,9 +897,7 @@ static void register_stored(void)
static DBusMethodVTable manager_methods[] = {
{ "ListServers", list_servers, "", "as" },
- { "CreateServer", create_server, "s", "s" },
{ "FindServer", find_server, "s", "s" },
- { "RemoveServer", remove_server, "s", "" },
{ "ListConnections", list_connections, "", "as" },
{ "FindConnection", find_connection, "s", "s" },
{ "CreateConnection", create_connection, "ss", "s" },
@@ -985,6 +954,15 @@ int network_init(DBusConnection *conn)
register_stored();
+ /* PAN user server */
+ register_server(BNEP_SVC_PANU);
+
+ /* Group Network server */
+ register_server(BNEP_SVC_GN);
+
+ /* Network Access Point server */
+ register_server(BNEP_SVC_NAP);
+
return 0;
}