Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp8452862ybi; Tue, 23 Jul 2019 08:49:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqwA5sIcwOuDhTakz66DqIqnepSyZyPzgrsNaagdYGIk7gNgtkvetbVsyNIKI8aBbcn/9FGi X-Received: by 2002:a17:902:aa8a:: with SMTP id d10mr82721575plr.154.1563896941922; Tue, 23 Jul 2019 08:49:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563896941; cv=none; d=google.com; s=arc-20160816; b=WIshR9en2SkQZwtgwneNVty0VmvhIxQuTuRldzpgAhFcevjGVTu713cLNlaZqmhOUV AZjaAT4aO3OFuz9P0bMcOedFrQcE1FxZk2CsG/8Tvb6LUOxWZiyznFB6ReCH1XulGpRS SDN0p68TcBy9LIGZDi29p1DaljVAf3iWlVL4YwXX58bcQyN3506RATg77GpdptpwnFJq a+MzRpO+zJtNtHspalNmkpY/F/UG/Uwnycq9ZaHr9vANt+g2eFA3IU5tFUOpb07OmW8n egbi+9riw3Z92cZjIOFS4UMDOhcAxxumsS3M26MNFcu1lVfJGk6eaxH614N8120T6Xxc qGvA== 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=KqLn8+bE/vEKaDQwLsUmWvs20QwlNFeyMYxnmAqou2s=; b=Qfgo/hL3QA282nYp/e5GqjZFqgISgLXTj4IpvARg6cMa5RGLJCDqTJ786eQ2jgR9bL 6wcxvBH83wVdwRQHP93ZF3ym+530Ll4AcpjwZQnMXHdiDeBuINxy43t68PMHjmpmIaHc 5nV383vj+EYjfKXz4vepROdruKeJumJ7LSbMMNRWLWaA0Edzzptw4Qg5TyoHURHSlrk2 Z3RBMjsEfHQmlIeWEwFwzRkzuRvoPCXY5QkCqENf6w321EEbFI8k1TXQyaS/9YS/g17E RZjxRcQpu3z2+NwukVc9LwmQa9LKGB07YGe8GgfgPdHx/oPuNGfyDa0m6xJnFN2+OeRq 1qJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@silvair-com.20150623.gappssmtp.com header.s=20150623 header.b=SJQ4tPXl; 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 cj12si11641493plb.237.2019.07.23.08.48.34; Tue, 23 Jul 2019 08:49:01 -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=SJQ4tPXl; 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 S1730109AbfGWKGf (ORCPT + 99 others); Tue, 23 Jul 2019 06:06:35 -0400 Received: from mail-lf1-f52.google.com ([209.85.167.52]:35068 "EHLO mail-lf1-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726293AbfGWKGf (ORCPT ); Tue, 23 Jul 2019 06:06:35 -0400 Received: by mail-lf1-f52.google.com with SMTP id p197so28895603lfa.2 for ; Tue, 23 Jul 2019 03:06:34 -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=KqLn8+bE/vEKaDQwLsUmWvs20QwlNFeyMYxnmAqou2s=; b=SJQ4tPXlHT9vBpqMbjuRruOBk6mkZishuPTQ4Gnultgy6Nlwa43DickFsaV9h8nSt3 pnr6d+0Jc5sDXJAL8xkvNu0dmYjIEK+YMu/TqT4yQdxLjgRFup/5biznL3Nj9TGQZAaU vSXM7iY3RTi+MoM2hF9NlRd8ebKeJ2tGZjDE+Y1/rygZbgf+Hs1xTr7XTAEKNcaf5TFO khO7HWF/R9TTpKyspO/TH+cbaTTw1UsjrOBTY4Ba8lJdDjPJHLoONyoxELHCr8rHiMs0 A6lJ3ZFkFzYOX3iRBYUG4FwP7ATf1bVy/4NIY/uHpvpnxzKCZuwYgaJtOkhSHLTZKhyz 2rpg== 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=KqLn8+bE/vEKaDQwLsUmWvs20QwlNFeyMYxnmAqou2s=; b=pVi5dXHlX534olmJuU0sX5rST9fOi32/CciAU/uq4eg7xxQdp/JMRuvZhbIqgf1RZi vXpPfRMDMYJJFLqqv/bnEPu5YCgJURRiAIcJA9ZM4uPUc4v+WQd+kdmyyM6h0As0Puv8 Slh9Y0hwJ1AsJIHx7BrPMTqlzRBGHJfyvGO+wkc1Ri2wW/NsDCn/sm+eJQ7JH4dKpf/q ccb6lta1gXE/vPof0fJ8WoALfwJz3lrKzi2API/DCfWljYstdYeTzkiuaWI1Hei3Gvcq 8+KbZeZpaY0zGBU2WAM+xEeQT5ImmP9isTkQtwl7PPNdLkKmG8f7AomwAj0N5loouoNz WWNQ== X-Gm-Message-State: APjAAAWPr+aWw7MRey96gAqkELSqnVWWrWZ2Eg3OHpMQ+KNHPDzifUEt i3Nkre8wbAargR7lxTMUAZteiMSCQzE= X-Received: by 2002:ac2:5225:: with SMTP id i5mr34393236lfl.157.1563876392968; Tue, 23 Jul 2019 03:06:32 -0700 (PDT) Received: from mlowasrzechonek2133.silvair.lan ([217.153.94.18]) by smtp.gmail.com with ESMTPSA id h129sm6395260lfd.74.2019.07.23.03.06.32 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 23 Jul 2019 03:06:32 -0700 (PDT) From: =?UTF-8?q?Micha=C5=82=20Lowas-Rzechonek?= To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 1/5] mesh: Convert void pointers to anonymous unions in managed_obj_request Date: Tue, 23 Jul 2019 12:06:19 +0200 Message-Id: <20190723100623.6957-2-michal.lowas-rzechonek@silvair.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190723100623.6957-1-michal.lowas-rzechonek@silvair.com> References: <20190723100623.6957-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.19.1