static struct network_adapter *create_adapter(struct btd_adapter *adapter) { struct network_adapter *na; GError *err = NULL; bdaddr_t src; na = g_new0(struct network_adapter, 1); na->adapter = btd_adapter_ref(adapter); adapter_get_address(adapter, &src); na->io = bt_io_listen(BT_IO_L2CAP, NULL, confirm_event, na, NULL, &err, BT_IO_OPT_SOURCE_BDADDR, &src, BT_IO_OPT_PSM, BNEP_PSM, BT_IO_OPT_OMTU, BNEP_MTU, BT_IO_OPT_IMTU, BNEP_MTU, BT_IO_OPT_SEC_LEVEL, security ? BT_IO_SEC_MEDIUM : BT_IO_SEC_LOW, BT_IO_OPT_INVALID); if (!na->io) { error("%s", err->message); g_error_free(err); adapter_free(na); return NULL; } return na; }
static void path_unregister(void *data) { struct network_adapter *na = data; DBG("Unregistered interface %s on path %s", NETWORK_SERVER_INTERFACE, adapter_get_path(na->adapter)); g_slist_free_full(na->servers, server_free); adapters = g_slist_remove(adapters, na); adapter_free(na); }
static void path_unregister(void *data) { struct network_server *ns = data; struct network_adapter *na = ns->na; DBG("Unregistered interface %s on path %s", ns->iface, adapter_get_path(na->adapter)); na->servers = g_slist_remove(na->servers, ns); server_free(ns); if (na->servers) return; adapters = g_slist_remove(adapters, na); adapter_free(na); }