static void do_kill(char *dst) { if (dst) bnep_kill_connection((void *) strtoba(dst)); else bnep_kill_all_connections(); }
static DBusMessage *disconnect_device(DBusConnection *conn, DBusMessage *msg, void *data) { DBusMessage *reply; struct network_server *ns = data; struct network_session *session; const char *addr, *devname; bdaddr_t dst_addr; if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &addr, DBUS_TYPE_STRING, &devname, DBUS_TYPE_INVALID)) return NULL; str2ba(addr, &dst_addr); session = find_session_by_addr(ns->sessions, dst_addr); if (!session) return btd_error_failed(msg, "No active session"); if (session->io) { bnep_if_down(devname); bnep_kill_connection(&dst_addr); } else return btd_error_not_connected(msg); reply = dbus_message_new_method_return(msg); if (!reply) return NULL; return reply; }
static void connection_destroy(DBusConnection *conn, void *user_data) { struct network_conn *nc = user_data; if (nc->state == CONNECTED) { bnep_if_down(nc->dev); bnep_kill_connection(&nc->peer->dst); } else if (nc->io) cancel_connection(nc, NULL); }
static void connection_destroy(DBusConnection *conn, void *user_data) { struct network_conn *nc = user_data; if (nc->state == CONNECTED) { bnep_if_down(nc->dev); bnep_kill_connection(device_get_address(nc->peer->device)); } else if (nc->io) cancel_connection(nc, -EIO); }