diff options
| author | Kristof Provost <kp@FreeBSD.org> | 2025-12-05 10:23:45 +0000 |
|---|---|---|
| committer | Kristof Provost <kp@FreeBSD.org> | 2025-12-05 12:24:52 +0000 |
| commit | f6aa57c86b6239e1f8c8ff50f28c9d0ed1af2ce3 (patch) | |
| tree | f3b215f7975a585b432d2d690241b333cf99f4cf /usr.sbin | |
| parent | 08f54dfca1970b1e014c99c7f8fc806b949267af (diff) | |
Diffstat (limited to 'usr.sbin')
| -rw-r--r-- | usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c | 21 |
1 files changed, 8 insertions, 13 deletions
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++) { |
