git: 466ac79e47fe - main - pfctl: Move duplicate code into new helper print_addr_str()

From: Kristof Provost <kp_at_FreeBSD.org>
Date: Mon, 30 Jun 2025 15:00:49 UTC
The branch main has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=466ac79e47fe6d486956096ae6724fdfd5776c39

commit 466ac79e47fe6d486956096ae6724fdfd5776c39
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2025-06-27 09:40:31 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2025-06-30 15:00:27 +0000

    pfctl: Move duplicate code into new helper print_addr_str()
    
    This simply puts the wiggle around inet_ntop() from four into one location.
    
    OK benno
    
    Obtained from:  OpenBSD, kn <kn@openbsd.org>, 88d4e2f324
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sbin/pfctl/pf_print_state.c | 34 ++++++++++++++++------------------
 sbin/pfctl/pfctl.h          |  1 +
 sbin/pfctl/pfctl_parser.c   |  9 +--------
 3 files changed, 18 insertions(+), 26 deletions(-)

diff --git a/sbin/pfctl/pf_print_state.c b/sbin/pfctl/pf_print_state.c
index 1d2fa45cd9d7..821c0745748a 100644
--- a/sbin/pfctl/pf_print_state.c
+++ b/sbin/pfctl/pf_print_state.c
@@ -85,31 +85,18 @@ print_addr(struct pf_addr_wrap *addr, sa_family_t af, int verbose)
 			printf("<%s>", addr->v.tblname);
 		return;
 	case PF_ADDR_RANGE: {
-		char buf[48];
+		print_addr_str(af, &addr->v.a.addr);
+		printf(" - ");
+		print_addr_str(af, &addr->v.a.mask);
 
-		if (inet_ntop(af, &addr->v.a.addr, buf, sizeof(buf)) == NULL)
-			printf("?");
-		else
-			printf("%s", buf);
-		if (inet_ntop(af, &addr->v.a.mask, buf, sizeof(buf)) == NULL)
-			printf(" - ?");
-		else
-			printf(" - %s", buf);
 		break;
 	}
 	case PF_ADDR_ADDRMASK:
 		if (PF_AZERO(&addr->v.a.addr, AF_INET6) &&
 		    PF_AZERO(&addr->v.a.mask, AF_INET6))
 			printf("any");
-		else {
-			char buf[48];
-
-			if (inet_ntop(af, &addr->v.a.addr, buf,
-			    sizeof(buf)) == NULL)
-				printf("?");
-			else
-				printf("%s", buf);
-		}
+		else
+			print_addr_str(af, &addr->v.a.addr);
 		break;
 	case PF_ADDR_NOROUTE:
 		printf("no-route");
@@ -133,6 +120,17 @@ print_addr(struct pf_addr_wrap *addr, sa_family_t af, int verbose)
 	}
 }
 
+void
+print_addr_str(sa_family_t af, struct pf_addr *addr)
+{
+	static char buf[48];
+
+	if (inet_ntop(af, addr, buf, sizeof(buf)) == NULL)
+		printf("?");
+	else
+		printf("%s", buf);
+}
+
 void
 print_name(struct pf_addr *addr, sa_family_t af)
 {
diff --git a/sbin/pfctl/pfctl.h b/sbin/pfctl/pfctl.h
index f4a033971865..ab24ec7174ec 100644
--- a/sbin/pfctl/pfctl.h
+++ b/sbin/pfctl/pfctl.h
@@ -120,6 +120,7 @@ void		 pfaltq_store(struct pf_altq *);
 char		*rate2str(double);
 
 void	 print_addr(struct pf_addr_wrap *, sa_family_t, int);
+void	 print_addr_str(sa_family_t, struct pf_addr *);
 void	 print_host(struct pf_addr *, u_int16_t p, sa_family_t, int);
 void	 print_seq(struct pfctl_state_peer *);
 void	 print_state(struct pfctl_state *, int);
diff --git a/sbin/pfctl/pfctl_parser.c b/sbin/pfctl/pfctl_parser.c
index c475eab0de91..89960efa3ca1 100644
--- a/sbin/pfctl/pfctl_parser.c
+++ b/sbin/pfctl/pfctl_parser.c
@@ -1233,15 +1233,8 @@ print_rule(struct pfctl_rule *r, const char *anchor_call, int verbose, int numer
 		if (PF_AZERO(&r->divert.addr, r->af)) {
 			printf(" divert-reply");
 		} else {
-			/* XXX cut&paste from print_addr */
-			char buf[48];
-
 			printf(" divert-to ");
-			if (inet_ntop(r->af, &r->divert.addr, buf,
-			    sizeof(buf)) == NULL)
-				printf("?");
-			else
-				printf("%s", buf);
+			print_addr_str(r->af, &r->divert.addr);
 			printf(" port %u", ntohs(r->divert.port));
 		}
 #endif