Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp11256395ybi; Thu, 25 Jul 2019 12:50:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqzeE1r/dDTudinR7gDkUUgI1YW4cHzXER0DBWkGA4s0rHZhH795P0uEAPICE9clCEn+4ehB X-Received: by 2002:a17:902:112c:: with SMTP id d41mr82249986pla.33.1564084214781; Thu, 25 Jul 2019 12:50:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564084214; cv=none; d=google.com; s=arc-20160816; b=b9oT/o/1TJb/c2d/KMisvB+mrWpbfUp9j9pi5Mc6AC/GIdaCkzd5JsZxIg0P7mTv4X YPNsdonOivxAO33PUszJawpjvJxCms7873GkQ5z4hIfJUZ1zRBRRUQLwAnMxf/YIhyew T9vPGxDnH0qciK5TAxO/MBt5LmDdfv3wXMpbrExH28ZTq+61zsAu3eKYZr99h77zdWyk LWG4t7K5R4oHN6AwHsQSH7hkRD1IW/E584Y00K5kXueIsu6IhrrcN2+vjRTryb5VLODG VogHuE3xtsgfUKYV6XNmG5UYeFAtgGp1oX+NKMz9zwz90AjuE0GGYDSXNcokqlaLA0Fu OEpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=h7K9lY2+0igCt03cZCM/gtXA75TBlEFAH6LhnyHb6fM=; b=L2Ed2ZzvJJtGLNP67UdhFl1OzGHIpI36cZnvfqoMXKm4AUZFj57SP1453lzTuepHdg l549+Z7cVSxAoyJ51scCG0L109CkPTNmrSkQ7j+2U7jnZXSC0BfDgynQqQnYozJQ9b53 7x7EtwDCehojPuD2cq6UXaAMxW2QlhjfojI+R1VezVZdZEBd2kZLjSEGg++71SzZCW2M oM2tEBhJ8Kl7uDnYk8DhB8/sO6+kfxoMzYvpxO/O1g3ONH4ly1RL6Oe2xxs0yCFJV0Ot fhqGHJ4nyl6xdzlqWzMrtoQ7GwR3Kspi6a0oyUyxrJN3s2CxoGwFlFgGBZW/PfcmQcJn DRCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@silvair-com.20150623.gappssmtp.com header.s=20150623 header.b=R07JoEuO; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s24si17939222pfh.227.2019.07.25.12.49.48; Thu, 25 Jul 2019 12:50:14 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@silvair-com.20150623.gappssmtp.com header.s=20150623 header.b=R07JoEuO; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726265AbfGYTto (ORCPT + 99 others); Thu, 25 Jul 2019 15:49:44 -0400 Received: from mail-lj1-f177.google.com ([209.85.208.177]:35480 "EHLO mail-lj1-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725819AbfGYTto (ORCPT ); Thu, 25 Jul 2019 15:49:44 -0400 Received: by mail-lj1-f177.google.com with SMTP id x25so49220271ljh.2 for ; Thu, 25 Jul 2019 12:49:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silvair-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=h7K9lY2+0igCt03cZCM/gtXA75TBlEFAH6LhnyHb6fM=; b=R07JoEuODo/TDW+A6+p6S/nL+5WoPNkk7vO5M5b8DXZ2oWuzjQdqVEuoE0EKCib7HH dOuRo5WBJu+wnUtE+j7KjAU5pKP2MZZ/rMWwLFzDAMK3+nm85i5ON8ROPfQsezEaIhbO xOGfh9/CYkXvlzCnwFrU5aFHMetebmO2t+EG6YPLAGMOFYI6mcP+OJrSs8SSFnZipaug 8J6QltF4sfMBca6u3tprn0wrV3ziV2KmqQt6g1gNsj6plWpkSI6+TV51eU/htTMqxwHt OPDX/wNvC0Ea0qFMjSTCNsVA2zdMnXtOVsozIa6hSZ+ruGHmvz9FEwBi20MHwIFlGkgt vPiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h7K9lY2+0igCt03cZCM/gtXA75TBlEFAH6LhnyHb6fM=; b=kFblqBccKKVdjDA79cubuEX0QUWxzOZeltnIeo99QtUO18U79UKLZGTlQPsqJXeZFZ +ff9ZPCYbKo8JoT2VNajDqVdvAlnhy6jjyiswlJO4vRAkq8w0dYNjN2kldday+HUm7L+ Np5JSTkZU3XA0KcpxaB7z14SaKkVuhw6Sm7W241qWtdO5gWY5KJoTO7te7TD8zRQEWuO yI8a9z5vJlwIJyjHvxA2Qe2A/kfLLiiS8IHe5+4gPNaz389krqenANffJeftcyk8I6WD KptZ3jXkY1+Jb9O0ezh7/7ZtwoV7CzKiClJDSXcyRkPV3vU7mcP7kHyI8yUwYSU7gPN+ iing== X-Gm-Message-State: APjAAAWCymfDNegHrxC5LUQa+FIUxyCt092dKwqkyDmzOBzuxuomn9Tt AXQQc6HMehqpa1cGyUHS44X/Q80G6RY= X-Received: by 2002:a2e:63cd:: with SMTP id s74mr46432358lje.164.1564084181861; Thu, 25 Jul 2019 12:49:41 -0700 (PDT) Received: from kynes.internet.domowy (apn-95-40-32-72.dynamic.gprs.plus.pl. [95.40.32.72]) by smtp.gmail.com with ESMTPSA id e62sm9327693ljf.82.2019.07.25.12.49.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Jul 2019 12:49:41 -0700 (PDT) From: =?UTF-8?q?Micha=C5=82=20Lowas-Rzechonek?= To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v4 1/5] mesh: Convert void pointers to anonymous unions in managed_obj_request Date: Thu, 25 Jul 2019 21:49:29 +0200 Message-Id: <20190725194933.7321-2-michal.lowas-rzechonek@silvair.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190725194933.7321-1-michal.lowas-rzechonek@silvair.com> References: <20190725194933.7321-1-michal.lowas-rzechonek@silvair.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org --- mesh/node.c | 75 +++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/mesh/node.c b/mesh/node.c index ceb46e4df..e51913edf 100644 --- a/mesh/node.c +++ b/mesh/node.c @@ -58,9 +58,11 @@ #define DEFAULT_CRPL 10 #define DEFAULT_SEQUENCE_NUMBER 0 -#define REQUEST_TYPE_JOIN 0 -#define REQUEST_TYPE_ATTACH 1 -#define REQUEST_TYPE_CREATE 2 +enum request_type { + REQUEST_TYPE_JOIN, + REQUEST_TYPE_ATTACH, + REQUEST_TYPE_CREATE, +}; struct node_element { char *path; @@ -110,10 +112,16 @@ struct mesh_node { }; struct managed_obj_request { - void *data; - void *cb; - void *user_data; - uint8_t type; + union { + const uint8_t *uuid; + struct mesh_node *node; + }; + union { + node_ready_func_t ready_cb; + node_join_ready_func_t join_ready_cb; + }; + struct l_dbus_message *pending_msg; + enum request_type type; }; static struct l_queue *nodes; @@ -1571,7 +1579,7 @@ static void get_managed_objects_cb(struct l_dbus_message *msg, void *user_data) node = l_new(struct mesh_node, 1); node->elements = l_queue_new(); } else { - node = req->data; + node = req->node; } num_ele = 0; @@ -1642,8 +1650,6 @@ static void get_managed_objects_cb(struct l_dbus_message *msg, void *user_data) } if (req->type == REQUEST_TYPE_ATTACH) { - node_ready_func_t cb = req->cb; - if (num_ele != node->num_ele) goto fail; @@ -1652,7 +1658,7 @@ static void get_managed_objects_cb(struct l_dbus_message *msg, void *user_data) node->disc_watch = l_dbus_add_disconnect_watch(bus, node->owner, app_disc_cb, node, NULL); - cb(req->user_data, MESH_ERROR_NONE, node); + req->ready_cb(req->pending_msg, MESH_ERROR_NONE, node); } else goto fail; @@ -1665,8 +1671,6 @@ static void get_managed_objects_cb(struct l_dbus_message *msg, void *user_data) init_storage_dir(node); } else if (req->type == REQUEST_TYPE_JOIN) { - node_join_ready_func_t cb = req->cb; - if (!agent) { l_error("Interface %s not found", MESH_PROVISION_AGENT_INTERFACE); @@ -1675,22 +1679,20 @@ static void get_managed_objects_cb(struct l_dbus_message *msg, void *user_data) node->num_ele = num_ele; set_defaults(node); - memcpy(node->uuid, req->data, 16); + memcpy(node->uuid, req->uuid, 16); if (!create_node_config(node, node->uuid)) goto fail; - cb(node, agent); - + req->join_ready_cb(node, agent); } else { /* Callback for create node request */ - node_ready_func_t cb = req->cb; struct keyring_net_key net_key; uint8_t dev_key[16]; node->num_ele = num_ele; set_defaults(node); - memcpy(node->uuid, req->data, 16); + memcpy(node->uuid, req->uuid, 16); if (!create_node_config(node, node->uuid)) goto fail; @@ -1717,7 +1719,7 @@ static void get_managed_objects_cb(struct l_dbus_message *msg, void *user_data) if (!keyring_put_net_key(node, PRIMARY_NET_IDX, &net_key)) goto fail; - cb(req->user_data, MESH_ERROR_NONE, node); + req->ready_cb(req->pending_msg, MESH_ERROR_NONE, node); } return; @@ -1726,26 +1728,19 @@ fail: mesh_agent_remove(agent); if (!is_new) { - /* Handle failed Attach request */ - node_ready_func_t cb = req->cb; - free_node_dbus_resources(node); - cb(req->user_data, MESH_ERROR_FAILED, node); + req->ready_cb(req->pending_msg, MESH_ERROR_FAILED, node); } else { /* Handle failed Join and Create requests */ if (node) node_remove(node); - if (req->type == REQUEST_TYPE_JOIN) { - node_join_ready_func_t cb = req->cb; - - cb(NULL, NULL); - } else { - node_ready_func_t cb = req->cb; - - cb(req->user_data, MESH_ERROR_FAILED, NULL); - } + if (req->type == REQUEST_TYPE_JOIN) + req->join_ready_cb(NULL, NULL); + else + req->ready_cb(req->pending_msg, MESH_ERROR_FAILED, + NULL); } } @@ -1770,9 +1765,9 @@ int node_attach(const char *app_path, const char *sender, uint64_t token, node->owner = l_strdup(sender); req = l_new(struct managed_obj_request, 1); - req->data = node; - req->cb = cb; - req->user_data = user_data; + req->node = node; + req->ready_cb = cb; + req->pending_msg = user_data; req->type = REQUEST_TYPE_ATTACH; l_dbus_method_call(dbus_get_bus(), sender, app_path, @@ -1794,8 +1789,8 @@ void node_join(const char *app_path, const char *sender, const uint8_t *uuid, l_debug(""); req = l_new(struct managed_obj_request, 1); - req->data = (void *) uuid; - req->cb = cb; + req->uuid = uuid; + req->join_ready_cb = cb; req->type = REQUEST_TYPE_JOIN; l_dbus_method_call(dbus_get_bus(), sender, app_path, @@ -1813,9 +1808,9 @@ void node_create(const char *app_path, const char *sender, const uint8_t *uuid, l_debug(""); req = l_new(struct managed_obj_request, 1); - req->data = (void *) uuid; - req->cb = cb; - req->user_data = user_data; + req->uuid = uuid; + req->ready_cb = cb; + req->pending_msg = user_data; req->type = REQUEST_TYPE_CREATE; l_dbus_method_call(dbus_get_bus(), sender, app_path, -- 2.22.0