From nobody Fri Dec 5 13:09:41 2025 X-Original-To: dev-commits-src-main@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 4dNBYK6kMkz6Hn7D for ; Fri, 05 Dec 2025 13:09:41 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dNBYK5mfbz3X3T for ; Fri, 05 Dec 2025 13:09:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764940181; 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=0EXm8PqQXqWVAJoBP6rohVhxrgd2SuOPxpLEXrf8jgw=; b=sJZQwCyUPodotpWQ1L3dRQ9SgQJZiF3/sxTf/sYfhm+vv7O1vz4F01dd42IhhEXOczvDYb TEiM6pKzQDW4wrHBI7JqMP4C/eJTEyITfuPaaM2K10qBFkJsROKS7fNzv6tCedIFA6DoEJ Ihem6PtobfDIhh+aT1/NSZ+vJ2m2G9k1Wppa+i5jZlwPQrGPYXnarlGBy9lKFKO40qnziD OnG3C/am8CCjjRQtImWQ2F9JrWxoDmm0rS9Ocqzn7MXDguKBzHJCsnmQ1o6rfQmnLDdPHM GDAPOdArTdkqsUGToVmCAdX0GN9MjYZ23sDSBUZo35Va4lESrJSUNh8kCgMzKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764940181; 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=0EXm8PqQXqWVAJoBP6rohVhxrgd2SuOPxpLEXrf8jgw=; b=VNZPkpioB0LZ9lgoINjFWIpUc5NXo/ETggElCXDpDctfH83BBR4Jp5t+mwRXhx4GBBiHfD +qY61qbLAOMJHtE5hgIL+bQOjg2WG/6XCn/Fzb4KKUVoWxA9bejCc3AmpAFEYVXqgkOYLu a2LkjKmqMjSWu6NBYEh687sGVlBG+cP4zq9oD8XxRZCs1BpTWFkFwlLfPPPwNrPjqZFgZF QKXGbGvZfAhYmg4Ag7hxiV6JaLiKtG4VOO6jPK6gY8bQP+X9jRc16VVqC4/TWkTd4b0V6Z fRFRzo79MjAKHOEGSRDgT8ZDUhfxmtYqPcOEujaLpaop65qD777BzT55dkFfkg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1764940181; a=rsa-sha256; cv=none; b=NnLNsOLpk91/YLTd1KQsMEXeYAdsXtRryVwMTouOusw3wmyvMxBrRCOtcRoSmsIZ9J7r4T 9WQOVGTWTdkuXjKralYzWK7zoJTjCMba+cjgRmJQszfwDjCQKAHEwmtHaQSzOpE+4qJ1Ct edZA8e/OWvyS+z7RR8fu6vx3gITbc4ZMoINvwkeSJ249AJO6zHdOe64JdxzBSqjcv7/0H8 W0RXXu++mp6cLQ5MUGo/OAL6xmh50HUoZNoojjB1QA+/ly0bq1pu0y+Av4MKtK+6w2gQMM tvBK+LKnw+k4EZGFAvEhZ2RBELa8VENhg5c2CrMNCp+3aH8xojIEGRUIcXBDQA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dNBYK53Nlz19Hr for ; Fri, 05 Dec 2025 13:09:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 28083 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 05 Dec 2025 13:09:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: f6aa57c86b62 - main - snmp_pf: use the libpfctl wrapper to retrieve astats List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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: f6aa57c86b6239e1f8c8ff50f28c9d0ed1af2ce3 Auto-Submitted: auto-generated Date: Fri, 05 Dec 2025 13:09:41 +0000 Message-Id: <6932d995.28083.43c40374@gitrepo.freebsd.org> The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=f6aa57c86b6239e1f8c8ff50f28c9d0ed1af2ce3 commit f6aa57c86b6239e1f8c8ff50f28c9d0ed1af2ce3 Author: Kristof Provost AuthorDate: 2025-12-05 10:23:45 +0000 Commit: Kristof Provost CommitDate: 2025-12-05 12:24:52 +0000 snmp_pf: use the libpfctl wrapper to retrieve astats Extend the test case to verify this works as expected. Sponsored by: Rubicon Communications, LLC ("Netgate") --- tests/sys/netpfil/pf/snmp.sh | 6 ++++++ usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c | 21 ++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/tests/sys/netpfil/pf/snmp.sh b/tests/sys/netpfil/pf/snmp.sh index 37cc4b75cf92..ad80fd457bb1 100644 --- a/tests/sys/netpfil/pf/snmp.sh +++ b/tests/sys/netpfil/pf/snmp.sh @@ -109,6 +109,12 @@ table_body() bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables atf_check -s exit:0 -o match:'pfTablesAddrPrefix.* = 24' \ bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables + + # Give bsnmp time to refresh the table + sleep 6 + # Expect non-zero packet count + atf_check -s exit:0 -o match:'pfTablesAddrPktsInPass.* = [1-9][0-9]*' \ + bsnmpwalk -s public@192.0.2.1 -i pf_tree.def pfTables } table_cleanup() diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c b/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c index f0f9e0f0e149..91194516614f 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c +++ b/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c @@ -1356,17 +1356,16 @@ err1: static int pfa_table_addrs(u_int sidx, struct pfr_table *pt) { - struct pfioc_table io; + struct pfr_table tbl = { 0 }; struct pfr_astats *t = NULL; struct pfa_entry *e; - int i, numaddrs = 1; + int i, numaddrs = 1, outnum; if (pt == NULL) return (-1); - memset(&io, 0, sizeof(io)); - strlcpy(io.pfrio_table.pfrt_name, pt->pfrt_name, - sizeof(io.pfrio_table.pfrt_name)); + strlcpy(tbl.pfrt_name, pt->pfrt_name, + sizeof(tbl.pfrt_name)); for (;;) { t = reallocf(t, numaddrs * sizeof(struct pfr_astats)); @@ -1377,22 +1376,18 @@ pfa_table_addrs(u_int sidx, struct pfr_table *pt) goto error; } - memset(t, 0, sizeof(*t)); - io.pfrio_size = numaddrs; - io.pfrio_buffer = t; - io.pfrio_esize = sizeof(struct pfr_astats); - - if (ioctl(pfctl_fd(pfh), DIOCRGETASTATS, &io)) { + outnum = numaddrs; + if (pfctl_get_astats(pfh, &tbl, t, &outnum, 0) != 0) { syslog(LOG_ERR, "pfa_table_addrs(): ioctl() on %s: %s", pt->pfrt_name, strerror(errno)); numaddrs = -1; break; } - if (numaddrs >= io.pfrio_size) + if (numaddrs >= outnum) break; - numaddrs = io.pfrio_size; + numaddrs = outnum; } for (i = 0; i < numaddrs; i++) {