From patchwork Tue Dec 7 06:01:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arne Schwabe X-Patchwork-Id: 2126 Return-Path: Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director9.mail.ord1d.rsapps.net ([172.31.255.6]) by backend41.mail.ord1d.rsapps.net with LMTP id uM+AAc2Tr2EHUwAAqwncew (envelope-from ) for ; Tue, 07 Dec 2021 12:03:09 -0500 Received: from proxy12.mail.iad3b.rsapps.net ([172.31.255.6]) by director9.mail.ord1d.rsapps.net with LMTP id OL2bHs2Tr2HWYAAAalYnBA (envelope-from ) for ; Tue, 07 Dec 2021 12:03:09 -0500 Received: from smtp38.gate.iad3b ([172.31.255.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy12.mail.iad3b.rsapps.net with LMTPS id EAC7Fs2Tr2FyWAAAEsW3lA (envelope-from ) for ; Tue, 07 Dec 2021 12:03:09 -0500 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: smtp38.gate.iad3b.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: 8ce46c08-577f-11ec-8d84-5254006f0979-1-1 Received: from [216.105.38.7] ([216.105.38.7:46990] helo=lists.sourceforge.net) by smtp38.gate.iad3b.rsapps.net (envelope-from ) (ecelerity 4.2.38.62370 r(:)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384) id 13/7A-22704-CC39FA16; Tue, 07 Dec 2021 12:03:08 -0500 Received: from [127.0.0.1] (helo=sfs-ml-1.v29.lw.sourceforge.com) by sfs-ml-1.v29.lw.sourceforge.com with esmtp (Exim 4.94.2) (envelope-from ) id 1mudrF-0003Pz-MQ; Tue, 07 Dec 2021 17:02:26 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mudrD-0003Oq-3v for openvpn-devel@lists.sourceforge.net; Tue, 07 Dec 2021 17:02:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type: 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=UU01vcahRQ91pcaFpt73062qPWir57MVr5/t1cyyEFM=; b=e6LZvxF2T/dfZBRHugovIaLxYJ aLQM83BBd/MDsyxyn8LIYgCW7sl9OdjrNYihbdzCL7dz5OsOzeb7OZiVRPy/m6vzcPUaI1yjCHsZu QEvVIKMxngPWho8RwJyGQiWeP4MK2ytn29bqW/2UXFWXudzTnyUzAN2sTG7C/4TOYIvg=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-Id: Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type: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=UU01vcahRQ91pcaFpt73062qPWir57MVr5/t1cyyEFM=; b=Ez0W5sSDIhQPp+bKJMeqnncdL+ 0roq+MsF+wzqP6swd6wR3k5TYpQhMnrsE3QsnflBkEnlejA8MYRJ/TxSdj49RjEuiNiZXexTbi+wB kfI6BMBIJtIdDCz6CLmQjrKSdqrDxUSYI7zZjr3CN4PQmIoUSWxNW1lfoavkq3BzGDFc=; Received: from mail.blinkt.de ([192.26.174.232]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.3) id 1mudrD-0006Mp-JF for openvpn-devel@lists.sourceforge.net; Tue, 07 Dec 2021 17:02:24 +0000 Received: from kamera.blinkt.de ([2001:638:502:390:20c:29ff:fec8:535c]) by mail.blinkt.de with smtp (Exim 4.94.2 (FreeBSD)) (envelope-from ) id 1mudr1-000Idq-Kp for openvpn-devel@lists.sourceforge.net; Tue, 07 Dec 2021 18:02:11 +0100 Received: (nullmailer pid 3275900 invoked by uid 10006); Tue, 07 Dec 2021 17:02:12 -0000 From: Arne Schwabe To: openvpn-devel@lists.sourceforge.net Date: Tue, 7 Dec 2021 18:01:55 +0100 Message-Id: <20211207170211.3275837-6-arne@rfc2549.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211207170211.3275837-1-arne@rfc2549.org> References: <20211207170211.3275837-1-arne@rfc2549.org> MIME-Version: 1.0 X-Spam-Report: Spam detection software, running on the system "util-spamd-1.v13.lw.sourceforge.com", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Signed-off-by: Arne Schwabe --- src/openvpn/mtu.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/openvpn/mtu.h b/src/openvpn/mtu.h index 72a9e515b..c1148c317 100644 --- a/src/openvpn/mtu.h +++ b/src/openvpn/mtu.h @@ -28,7 +28,7 @@ Content analysis details: (0.3 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record X-Headers-End: 1mudrD-0006Mp-JF Subject: [Openvpn-devel] [PATCH 05/21] Document frame related function and variables a bit more 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: , Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox Signed-off-by: Arne Schwabe Acked-by: Frank Lichtenheld --- src/openvpn/mtu.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/openvpn/mtu.h b/src/openvpn/mtu.h index 72a9e515b..c1148c317 100644 --- a/src/openvpn/mtu.h +++ b/src/openvpn/mtu.h @@ -28,7 +28,7 @@ /* * - * Packet maninipulation routes such as encrypt, decrypt, compress, decompress + * Packet manipulation routes such as encrypt, decrypt, compress, decompress * are passed a frame buffer that looks like this: * * [extra_frame bytes] [mtu bytes] [extra_frame_bytes] [compression overflow bytes] @@ -117,7 +117,12 @@ struct frame { int extra_tun; /**< Maximum number of bytes in excess of * the tun/tap MTU that might be read * from or written to the virtual - * tun/tap network interface. */ + * tun/tap network interface. + * + * Only set with the option --tun-mtu-extra + * which defaults to 0 for tun and 32 + * (\c TAP_MTU_EXTRA_DEFAULT) for tap. + * */ int extra_link; /**< Maximum number of bytes in excess of * external network interface's MTU that @@ -177,11 +182,22 @@ struct options; * Control buffer headroom allocations to allow for efficient prepending. */ #define FRAME_HEADROOM_BASE(f) (TUN_LINK_DELTA(f) + (f)->extra_buffer + (f)->extra_link) +/* Same as FRAME_HEADROOM_BASE but rounded up to next multiple of PAYLOAD_ALIGN */ #define FRAME_HEADROOM(f) frame_headroom(f) /* * Max size of a buffer used to build a packet for output to * the TCP/UDP port. + * + * the FRAME_HEADROOM_BASE(f) * 2 should not be necessary but it looks that at + * some point in the past we seem to have lost the information what parts of + * the extra space we need to have before the data and which we need after + * the data. So we ensure we have the FRAME_HEADROOM before and after the + * actual data. + * + * Most of our code only prepends headers but compression needs the extra bytes + * *after* the data as compressed data might end up larger than the original + * data (and max compression overhead is part of extra_buffer) */ #define BUF_SIZE(f) (TUN_MTU_SIZE(f) + FRAME_HEADROOM_BASE(f) * 2) @@ -246,6 +262,8 @@ static inline int frame_headroom(const struct frame *f) { const int offset = FRAME_HEADROOM_BASE(f); + /* These two lines just pad offset to next multiple of PAYLOAD_ALIGN in + * a complicated and confusing way */ const int delta = ((PAYLOAD_ALIGN << 24) - offset) & (PAYLOAD_ALIGN - 1); return offset + delta; }