From nobody Fri Jan 17 16:02:13 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YZPd229vRz5l8H4; Fri, 17 Jan 2025 16:02:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YZPd20bsjz4731; Fri, 17 Jan 2025 16:02:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737129734; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F1gU1585Y22fv9Y9BS7Ma/jrappjAKunLRJSYJ1mzZA=; b=D0z21TvnJXFkpDwbcd9bVWdojeUZe4nYmAdwbfmMp0OI0CpMT21HTxNjZuQJO3yAilnzyT pclEqIoyVuvbW8ymT+Z0Pgg2gXykw/nK4NCnH3HBUZiHoCH8b+A8kiSk77TzQXe87/pEeV C74i/YKY371LFKP2V6WcG9m+cvjUo8TkjTBNAUnsAY/gOMkcc6gnhyhWMGFlqNVHFNoLHX tjnQRCNAxbWRLs3PLpy0chm+xHyEBGgSn17U665BSBFuNxnet3Es0ra1y6+vPKDJSQveX7 YPqW734RbWqZB1+Ixwiir5jDiNcf5QMzlz9JHysdFSJoNTUb67vMWIc5CILNtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1737129734; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=F1gU1585Y22fv9Y9BS7Ma/jrappjAKunLRJSYJ1mzZA=; b=qR0tj1Du2MEjrfMZbRHDGspnI7xCeVQPKIoaR/sZUSC40sXoNiyaXv9n4NMr/x/Uk7OA0L 23BdRjNoosnNomfbMxaMv4JbApiIRh0Q6fxZqLblpiLp4vDrok81X12zwwJ49UMiJGPGQQ 73Y3vGQR7/AetOXv7JC/GEepfG1AMULZMo3YvftmPK3OiP6u5ftyRl5hw8g+KvJD9LcX83 y5CPaHWXOlWMrmKdYcLTXmzPIQYwZGLP7l3WMb/nfPGAlx5mna4yotc4WrFU/YCnLXQD1b uVdUfDSWwPQOsvJrQC0ZBo+XMzhNb5pagEkAp8mN2uiQ2RDn109EI0dCxOZxyA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1737129734; a=rsa-sha256; cv=none; b=ByzgcgPbzSKkWQjgMCRDGT3IrygXOr7g7xF9QN2ekz3jMmNY063cvA2Z3NdD8fh0LFRuaE V8scY+vJgIpGxWTr7c97I5Oyk1GWiiAexkVmf5OX+dZdvcobsZikstFUel+4x4PG7RLfg9 aWRhaYzoCCfVpbBuP4p0z7MhWaGJiOm1ZshLny8xHvHsiHCmD3gnzZ+jBN1EYLWsWzM0b4 lFkEhfinGHFu7XKouTmAxcwwtsKgP615KhcmG/cDOW+53rN9HT3O0RKwlln/VzoU4Tcxni 1LSdiwZJC46UbcVC8d9Mx7NeUctMPXfTctC3sKlpkzClrz4EgvHkbA3aBiWWPA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YZPd203Ljz8v1; Fri, 17 Jan 2025 16:02:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50HG2DBB065736; Fri, 17 Jan 2025 16:02:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50HG2DmR065733; Fri, 17 Jan 2025 16:02:13 GMT (envelope-from git) Date: Fri, 17 Jan 2025 16:02:13 GMT Message-Id: <202501171602.50HG2DmR065733@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 76e00c722bee - main - dummymbuf: add 'enlarge' List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 76e00c722bee123f902febce7b637ea7afa5e364 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=76e00c722bee123f902febce7b637ea7afa5e364 commit 76e00c722bee123f902febce7b637ea7afa5e364 Author: Kristof Provost AuthorDate: 2025-01-06 10:39:32 +0000 Commit: Kristof Provost CommitDate: 2025-01-17 16:00:08 +0000 dummymbuf: add 'enlarge' Teach dummymbuf to replace mbufs with larger ones. This can be useful for testing for bugs that depend on mbuf layout. Sponsored by: Rubicon Communications, LLC ("Netgate") --- share/man/man4/dummymbuf.4 | 4 +++- sys/net/dummymbuf.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/share/man/man4/dummymbuf.4 b/share/man/man4/dummymbuf.4 index 844a7c0565bd..08926d2824c6 100644 --- a/share/man/man4/dummymbuf.4 +++ b/share/man/man4/dummymbuf.4 @@ -26,7 +26,7 @@ .\" .\" Note: The date here should be updated whenever a non-trivial .\" change is made to the manual page. -.Dd August 2, 2024 +.Dd January 6, 2025 .Dt DUMMYMBUF 4 .Os .Sh NAME @@ -121,6 +121,8 @@ tail mbuf(s) left empty. .Pp As a result, only the layout of a mbuf chain is altered, its content logically is left intact. +.It enlarge +Unconditionally replace the mbuf with an mbuf of the specified size. .El .Sh SYSCTL VARIABLES The following variables are available: diff --git a/sys/net/dummymbuf.c b/sys/net/dummymbuf.c index ff566cfb87c3..e88087e1572f 100644 --- a/sys/net/dummymbuf.c +++ b/sys/net/dummymbuf.c @@ -209,6 +209,37 @@ bad: return (NULL); } +static struct mbuf * +dmb_m_enlarge(struct mbuf *m, struct rule *rule) +{ + struct mbuf *n; + int size; + + size = (int)strtol(rule->opargs, NULL, 10); + if (size < 0 || size > MJUM16BYTES) + goto bad; + + if (!(m->m_flags & M_PKTHDR)) + goto bad; + if (m->m_pkthdr.len <= 0) + return (m); + + if ((n = m_get3(size, M_NOWAIT, MT_DATA, M_PKTHDR)) == NULL) + goto bad; + + m_move_pkthdr(n, m); + m_copydata(m, 0, m->m_pkthdr.len, n->m_ext.ext_buf); + n->m_len = m->m_pkthdr.len; + + n->m_next = m; + + return (n); + +bad: + m_freem(m); + return (NULL); +} + static bool read_rule(const char **cur, struct rule *rule, bool *eof) { @@ -278,6 +309,9 @@ read_rule(const char **cur, struct rule *rule, bool *eof) if (strstr(*cur, "pull-head") == *cur) { rule->op = dmb_m_pull_head; *cur += strlen("pull-head"); + } else if (strstr(*cur, "enlarge") == *cur) { + rule->op = dmb_m_enlarge; + *cur += strlen("enlarge"); } else { return (false); }