Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 May 2025 13:10:45 GMT
From:      Kristof Provost <kp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 1f8b1a3fac5f - main - authpf: use libpfctl to add or remove addresses to/from a table
Message-ID:  <202505081310.548DAjam047239@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=1f8b1a3fac5f7fd28bd2eb09a13272774d2b6899

commit 1f8b1a3fac5f7fd28bd2eb09a13272774d2b6899
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2025-05-07 09:08:41 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2025-05-08 13:10:25 +0000

    authpf: use libpfctl to add or remove addresses to/from a table
    
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 contrib/pf/authpf/authpf.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/contrib/pf/authpf/authpf.c b/contrib/pf/authpf/authpf.c
index fcf9812cdcca..73cc9a7dc657 100644
--- a/contrib/pf/authpf/authpf.c
+++ b/contrib/pf/authpf/authpf.c
@@ -842,15 +842,11 @@ error:
 static int
 change_table(int add, const char *ip_src)
 {
-	struct pfioc_table	io;
+	struct pfr_table	tbl = { 0 };
 	struct pfr_addr		addr;
+	int			ret;
 
-	bzero(&io, sizeof(io));
-	strlcpy(io.pfrio_table.pfrt_name, tablename,
-	    sizeof(io.pfrio_table.pfrt_name));
-	io.pfrio_buffer = &addr;
-	io.pfrio_esize = sizeof(addr);
-	io.pfrio_size = 1;
+	strlcpy(tbl.pfrt_name, tablename, sizeof(tbl.pfrt_name));
 
 	bzero(&addr, sizeof(addr));
 	if (ip_src == NULL || !ip_src[0])
@@ -866,11 +862,16 @@ change_table(int add, const char *ip_src)
 		return (-1);
 	}
 
-	if (ioctl(pfctl_fd(pfh), add ? DIOCRADDADDRS : DIOCRDELADDRS, &io) &&
-	    errno != ESRCH) {
+	if (add)
+		ret = pfctl_table_add_addrs(pfctl_fd(pfh), &tbl, &addr, 1, NULL, 0);
+	else
+		ret = pfctl_table_del_addrs(pfctl_fd(pfh), &tbl, &addr, 1, NULL, 0);
+
+
+	if (ret != 0 && ret != ESRCH) {
 		syslog(LOG_ERR, "cannot %s %s from table %s: %s",
 		    add ? "add" : "remove", ip_src, tablename,
-		    strerror(errno));
+		    strerror(ret));
 		return (-1);
 	}
 	return (0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505081310.548DAjam047239>