diff options
author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-06-20 20:23:35 +0000 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-06-20 20:23:35 +0000 |
commit | 3a653f915b0e7de28e111665ba40b69ae6d6a235 (patch) | |
tree | 7865b048eae5fa79af6a344c042b15b255d8e420 /network/manager.c | |
parent | fbba4be5b162fdffe8e12e3b1e0fa11629436600 (diff) |
Remove CreateServer and RemoveServer, servers are always create.
Diffstat (limited to 'network/manager.c')
-rw-r--r-- | network/manager.c | 110 |
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; } |