From patchwork Thu Apr 1 02:13:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arne Schwabe X-Patchwork-Id: 1687 Return-Path: Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director9.mail.ord1d.rsapps.net ([172.30.191.6]) by backend30.mail.ord1d.rsapps.net with LMTP id +AXjMjvHZWA3DQAAIUCqbw (envelope-from ) for ; Thu, 01 Apr 2021 09:14:35 -0400 Received: from proxy5.mail.ord1d.rsapps.net ([172.30.191.6]) by director9.mail.ord1d.rsapps.net with LMTP id KLWGMjvHZWBVJAAAalYnBA (envelope-from ) for ; Thu, 01 Apr 2021 09:14:35 -0400 Received: from smtp12.gate.ord1d ([172.30.191.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy5.mail.ord1d.rsapps.net with LMTPS id gOtDMjvHZWBwMQAA8Zzt7w (envelope-from ) for ; Thu, 01 Apr 2021 09:14:35 -0400 X-Spam-Threshold: 95 X-Spam-Score: 0 X-Spam-Flag: NO X-Virus-Scanned: OK X-Orig-To: openvpnslackdevel@openvpn.net X-Originating-Ip: [216.105.38.7] Authentication-Results: smtp12.gate.ord1d.rsapps.net; iprev=pass policy.iprev="216.105.38.7"; spf=pass smtp.mailfrom="openvpn-devel-bounces@lists.sourceforge.net" smtp.helo="lists.sourceforge.net"; dkim=fail (signature verification failed) header.d=sourceforge.net; dkim=fail (signature verification failed) header.d=sf.net; dmarc=none (p=nil; dis=none) header.from=rfc2549.org X-Suspicious-Flag: YES X-Classification-ID: 33b122a0-92ec-11eb-b6b7-52540070b731-1-1 Received: from [216.105.38.7] ([216.105.38.7:60178] helo=lists.sourceforge.net) by smtp12.gate.ord1d.rsapps.net (envelope-from ) (ecelerity 4.2.38.62370 r(:)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384) id B4/90-14936-A37C5606; Thu, 01 Apr 2021 09:14:34 -0400 Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from ) id 1lRx92-0001C8-Gc; Thu, 01 Apr 2021 13:13:56 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lRx8z-0001Bs-7X for openvpn-devel@lists.sourceforge.net; Thu, 01 Apr 2021 13:13:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=References:In-Reply-To:Message-Id:Date:Subject:To: From:Sender:Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=+6qX6VBuIQlKYYxj9jHCpSr5xMdeBsRBzoZux71okQ4=; b=iFLmEzjMw+jqvJB5LXHfbrCrLU j2JPAWXDbkyPLFByYyQJTmlCTfQOXls4S0NtPh1KIvaGQZSp4yhKyfDo7gJQv4aigYHw9xZxt59hu eWXQp3PbbWd9HqIYPtSXrf9YUYjkyPcmAJyKXVpbnK/GXshqzMhrR2RAtIo/HDZxW6kQ=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=References:In-Reply-To:Message-Id:Date:Subject:To:From:Sender:Reply-To:Cc :MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=+6qX6VBuIQlKYYxj9jHCpSr5xMdeBsRBzoZux71okQ4=; b=ezNnpJqKG9BaXWdmgRVGIIpYul hmIgUqFHey/W+m377z0G05tUeifPJXEeJ/KB2iZ9Ks4b3hKLdxlA0PznLn4ZiX/Qwresm9OyJXWCU ekv1sWCxquWGI7KxL4bzBZ3B4drwyWi9rvyLnXtR9J8tN4JatGkvyt9KHhxhDms76YsA=; Received: from mail.blinkt.de ([192.26.174.232]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.2) id 1lRx8s-0036am-In for openvpn-devel@lists.sourceforge.net; Thu, 01 Apr 2021 13:13:53 +0000 Received: from kamera.blinkt.de ([2001:638:502:390:20c:29ff:fec8:535c]) by mail.blinkt.de with smtp (Exim 4.94 (FreeBSD)) (envelope-from ) id 1lRx8k-000J8R-Kp for openvpn-devel@lists.sourceforge.net; Thu, 01 Apr 2021 15:13:38 +0200 Received: (nullmailer pid 3767 invoked by uid 10006); Thu, 01 Apr 2021 13:13:38 -0000 From: Arne Schwabe To: openvpn-devel@lists.sourceforge.net Date: Thu, 1 Apr 2021 15:13:35 +0200 Message-Id: <20210401131337.3684-13-arne@rfc2549.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210401131337.3684-1-arne@rfc2549.org> References: <20210401131337.3684-1-arne@rfc2549.org> X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: rfc2549.org] 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-Headers-End: 1lRx8s-0036am-In Subject: [Openvpn-devel] [PATCH 12/14] Extract multi_assign_peer_id into its own function X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox This makes multi_get_create_instance_udp a bit shorter and better structured and also prepares this method to be called from the mutlti TCP context with DCO which will also need to assign unique peer ids to instances. Signed-off-by: Arne Schwabe Acked-by: Gert Doering --- src/openvpn/mudp.c | 20 +------------------- src/openvpn/multi.c | 21 +++++++++++++++++++++ src/openvpn/multi.h | 10 ++++++++++ 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/openvpn/mudp.c b/src/openvpn/mudp.c index 90e32a8ec..9225d42de 100644 --- a/src/openvpn/mudp.c +++ b/src/openvpn/mudp.c @@ -103,27 +103,9 @@ multi_get_create_instance_udp(struct multi_context *m, bool *floated) mi = multi_create_instance(m, &real); if (mi) { - int i; - hash_add_fast(hash, bucket, &mi->real, hv, mi); mi->did_real_hash = true; - - /* max_clients must be less then max peer-id value */ - ASSERT(m->max_clients < MAX_PEER_ID); - - for (i = 0; i < m->max_clients; ++i) - { - if (!m->instances[i]) - { - mi->context.c2.tls_multi->peer_id = i; - m->instances[i] = mi; - break; - } - } - - /* should not really end up here, since multi_create_instance returns null - * if amount of clients exceeds max_clients */ - ASSERT(i < m->max_clients); + multi_assign_peer_id(m, mi); } } else diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c index 071bd5b61..d4c5304cb 100644 --- a/src/openvpn/multi.c +++ b/src/openvpn/multi.c @@ -4016,6 +4016,27 @@ init_management_callback_multi(struct multi_context *m) #endif /* ifdef ENABLE_MANAGEMENT */ } +void multi_assign_peer_id(struct multi_context *m, struct multi_instance *mi) +{ + /* max_clients must be less then max peer-id value */ + ASSERT(m->max_clients < MAX_PEER_ID); + + for (int i = 0; i < m->max_clients; ++i) + { + if (!m->instances[i]) + { + mi->context.c2.tls_multi->peer_id = i; + m->instances[i] = mi; + break; + } + } + + /* should not really end up here, since multi_create_instance returns null + * if amount of clients exceeds max_clients */ + ASSERT(mi->context.c2.tls_multi->peer_id < m->max_clients); +} + + /* * Top level event loop. */ diff --git a/src/openvpn/multi.h b/src/openvpn/multi.h index b7078b711..9d771f537 100644 --- a/src/openvpn/multi.h +++ b/src/openvpn/multi.h @@ -676,5 +676,15 @@ multi_set_pending(struct multi_context *m, struct multi_instance *mi) { m->pending = mi; } +/** + * Assigns a peer-id to a a client and adds the instance to the + * the instances array of the \c multi_context structure. + * + * @param m - The single \c multi_context structure. + * @param mi - The \c multi_instance of the VPN tunnel to be + * postprocessed. + */ +void multi_assign_peer_id(struct multi_context *m, struct multi_instance *mi); + #endif /* MULTI_H */