From nobody Sun Jan 28 17:57:18 2024 X-Original-To: dev-commits-src-branches@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 4TNJzf69H7z5919J; Sun, 28 Jan 2024 17:57:18 +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 4TNJzf5jJVz4X9C; Sun, 28 Jan 2024 17:57:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1706464638; 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=oiW5jn5H21h6sevTxKUV3ynieGQLAVoJX0IMQ1CYbLA=; b=Kv98XmnI7SiELAjMk/5UaNHRYBwSq4Dw66PAXRUqgh2T3m5QtwQhNULaTeTA8p4M/8MbAi u0036a8++FhiGAfK+m2IqhnOqh8HdF5zehPDQ56mmD0VM0qX4P+YadDGne8gzmTOwXi69m 54ulLVFqsHcJhRtPpcf+v/uV9t2hSqyf7IFneJedMWM//E3TfOK+JD1TLc303lbeOKQSsW MtJrE7AodLyDkhSaTROX8TwYiWr2XwRC08vj80pDnyclIUXgbz6dpfRsIEFAEi06Q9CssM ajcAqhKtLYS08cOBMqPJvb2GeEiDKsUd92+bOZ4Djwct8mksk4RJG6+jAXJVdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1706464638; 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=oiW5jn5H21h6sevTxKUV3ynieGQLAVoJX0IMQ1CYbLA=; b=SXsH9/cOJX4pEmiMQUdlavJ0/Pes7a0du+Zu0FKeP23Nmzm8Z8J6egCbi5DTgceoPaojMO a46jtQLwl2fQF2iMDymQItd4TlslQqC/nR7vf6MP7zFhBJUo26HHgPpj6PF/dQBz1SylUM MSMX6GNDM6uO8b93Fm3g+Fv5r/+5p2kWlUo52mvfWooQ9jw10uXXeqcsfLSZAFbxgAwR01 actODakhoeMbq7LBHMiBB1ByBORRoNap7jmTbCMnuSgh2KHoXrWJVouIyQtMFNTJgLbu6p tvbac8OUTAetnDxjJRsrCd7yD+gFocWi5Dkd2+oze+05D2UCFF8PaG3prElDEQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1706464638; a=rsa-sha256; cv=none; b=S8iNIZCOeEs6XfWZxYUpCqdaW5rbr0fowJCXZoOfBQA4uNmYfPlzUmMiiH1EUYJzKiDSnp 0RGny0e0+iYV0HFnRt1XHQ5mGjbcH8N+3B/cmDalrgfNKjd25qJKsWuclrbWdibkzZ+b59 lohBPfEKOaz1LsOGAdBp06Mi0GrGsfXoaOsVChbk1+eLRA6C+P6sJfwEqv5aAPVy9OimN/ XoFb5WtJOz1aAN+MYo1rzUAbF52uTAwSmbrxREP4MX3AyR8aQU4mt6/qTTqskIN2yJ/PyO ifAykm7cIbKXbtoxDtVBmxk/ooeQ6+vlGSJw1Ij06tGWxMrvqQ56ST5G0OlaGA== 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 4TNJzf4mwYzHBM; Sun, 28 Jan 2024 17:57:18 +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 40SHvIf8011886; Sun, 28 Jan 2024 17:57:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 40SHvINt011883; Sun, 28 Jan 2024 17:57:18 GMT (envelope-from git) Date: Sun, 28 Jan 2024 17:57:18 GMT Message-Id: <202401281757.40SHvINt011883@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: e65182c7bc28 - stable/14 - libifconfig: Fix bridge status member list List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/14 X-Git-Reftype: branch X-Git-Commit: e65182c7bc2835d847f363bf5d7ffc6e14426570 Auto-Submitted: auto-generated The branch stable/14 has been updated by grembo: URL: https://cgit.FreeBSD.org/src/commit/?id=e65182c7bc2835d847f363bf5d7ffc6e14426570 commit e65182c7bc2835d847f363bf5d7ffc6e14426570 Author: Michael Gmelin AuthorDate: 2023-12-20 20:21:55 +0000 Commit: Michael Gmelin CommitDate: 2024-01-28 17:55:56 +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 cf0c81d6f682..44370a905223 100755 --- a/tests/sys/net/if_bridge_test.sh +++ b/tests/sys/net/if_bridge_test.sh @@ -663,6 +663,33 @@ vlan_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" @@ -677,4 +704,5 @@ atf_init_test_cases() atf_add_test_case "gif" atf_add_test_case "mtu" atf_add_test_case "vlan" + atf_add_test_case "many_bridge_members" }