From nobody Fri Jan 05 11:57:12 2024 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 4T624m6Qv3z56w5c; Fri, 5 Jan 2024 11:57:12 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4T624m5ymSz4QLN; Fri, 5 Jan 2024 11:57:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1704455832; 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=Z+0PJ6AyiMsXBhs7KAhpoWj4s1tdazgG7jtahblxhdw=; b=tbhCkUlrlvk2ZJ3d/0z43W1qcOuvYb66wWvs17zJW3JLOArSoEmpx6dp8+lFAresH34QqV UFk7X5GYedSMTjtE6RsMidF5crf0cp4c2lp9KUJilF5hon+rA/uY6cshZWrxhSEtdloMe2 pZKg22k3Nd6n9yYxhXhIspMJ00EmUcjUjIaJFTu4pi7XXJTqfPsCQOpGBK48WHD9cEk+j+ 9UUU0BUokmZYdYFRMGmi8hsqNuvMiFq5BV8RqmlvaCWPrI1Wt2UnU0yNcCysZN5WEY4Rg9 JJIlJwe/u2jTY9dMaejkHqF6TLrv+8Gx47YqHah/vnoG2S4ys1v8hBkoMdRUTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1704455832; 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=Z+0PJ6AyiMsXBhs7KAhpoWj4s1tdazgG7jtahblxhdw=; b=lwGyg2/VO1nhrOu1kYy29lz+s2V9/uRON22iHD+DtoTaWsZszb9+7BnoS34GzJzwNuVU5x L4X/GyVvk11PemU0s4GhavuFo77DNkToQ1ilr1FYcfsJgYUKxycW45sO5cBbf07XANLHw9 cwIPPU+qYuOjwtidB9pMPAkk2vu/9ObxuRm0HCFLydewxMJrf7OnL+RIfGOAbtrJLAExom egpdlGl5nmfQxSr+pg7T/qGVtTX2xYB7NELmTOEttvjLG79kqofNzRUGrOht9QfykjtVhy 0i9naGLrZ3eDi/nHwkqG9sod5xyugpB6c6DCfea5EO8URopqYzs1qPsWAa0lMg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1704455832; a=rsa-sha256; cv=none; b=h1mSoyGn+CjQe6IxYoI5F3kyyaAgKVA1A7dnkM/XolHL8Fck5u4CpPrA+6iId5O0CM7Uiz kg6SE00blblKwhiSwB4tiP6vxgS+TZp+HqEl2dRuob0lWaofGYO39Wr2S0ecgDdfGmHpe0 4k5w3243sOn+nw40/2ro/LyTqr8x75bzz7fuL2+SQwFzW/8r9+Osm3McB8T72ceubuSaev kbqVbLyetBaUlT97Xi8GtRrYWpNgMELdty4Dce/mnpgGkbv7DubjMS526ZbFTmtSJOrdot l2FP8u5GWwZ0Vs8W8WwqvbJCNa08lwlVeHAoyIcX5J+9PmiYnCdnQeKxWBnfKA== 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 4T624m50w8zwCC; Fri, 5 Jan 2024 11:57:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 405BvCfm084962; Fri, 5 Jan 2024 11:57:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 405BvCDo084959; Fri, 5 Jan 2024 11:57:12 GMT (envelope-from git) Date: Fri, 5 Jan 2024 11:57:12 GMT Message-Id: <202401051157.405BvCDo084959@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Gmelin Subject: git: c2299997ce17 - stable/13 - libifconfig: Fix bridge status member list 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: grembo X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c2299997ce174e6b1ec3ad14bb10c19b64942609 Auto-Submitted: auto-generated The branch stable/13 has been updated by grembo: URL: https://cgit.FreeBSD.org/src/commit/?id=c2299997ce174e6b1ec3ad14bb10c19b64942609 commit c2299997ce174e6b1ec3ad14bb10c19b64942609 Author: Michael Gmelin AuthorDate: 2023-12-20 20:21:55 +0000 Commit: Michael Gmelin CommitDate: 2024-01-05 11:56:18 +0000 libifconfig: Fix bridge status member list When this functionality was moved to libifconfig in 3dfbda3401abea84da9, the end of list calculation was modified for unknown reasons, practically limiting the number of bridge member returned to (about) 102. This patch changes the calculation back to what it was originally and adds a unit test to verify it works as expected. Reported by: Patrick M. Hausen (via ML) Reviewed by: kp Approved by: kp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D43135 (cherry picked from commit 3d36053ca6d6a17d408c8f92c504e6135dc9d8df) --- lib/libifconfig/libifconfig_bridge.c | 2 +- tests/sys/net/if_bridge_test.sh | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/libifconfig/libifconfig_bridge.c b/lib/libifconfig/libifconfig_bridge.c index e4db90f373d6..2a9bbc35858b 100644 --- a/lib/libifconfig/libifconfig_bridge.c +++ b/lib/libifconfig/libifconfig_bridge.c @@ -111,7 +111,7 @@ ifconfig_bridge_get_bridge_status(ifconfig_handle_t *h, free(bridge); return (-1); } - if (members.ifbic_len <= len) + if ((members.ifbic_len + sizeof(*members.ifbic_req)) < len) break; } if (buf == NULL) { diff --git a/tests/sys/net/if_bridge_test.sh b/tests/sys/net/if_bridge_test.sh index 8abe5d3cf7da..b9540c79faaa 100755 --- a/tests/sys/net/if_bridge_test.sh +++ b/tests/sys/net/if_bridge_test.sh @@ -516,6 +516,33 @@ gif_cleanup() vnet_cleanup } +atf_test_case "many_bridge_members" "cleanup" +many_bridge_members_head() +{ + atf_set descr 'many_bridge_members ifconfig test' + atf_set require.user root +} + +many_bridge_members_body() +{ + vnet_init + + bridge=$(vnet_mkbridge) + ifcount=256 + for _ in $(seq 1 $ifcount); do + epair=$(vnet_mkepair) + ifconfig "${bridge}" addm "${epair}"a + done + + atf_check -s exit:0 -o inline:"$ifcount\n" \ + sh -c "ifconfig ${bridge} | grep member: | wc -l | xargs" +} + +many_bridge_members_cleanup() +{ + vnet_cleanup +} + atf_init_test_cases() { atf_add_test_case "bridge_transmit_ipv4_unicast" @@ -528,4 +555,5 @@ atf_init_test_cases() atf_add_test_case "mac_conflict" atf_add_test_case "stp_validation" atf_add_test_case "gif" + atf_add_test_case "many_bridge_members" }