From nobody Wed Aug 20 08:10:38 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 4c6Jzg0S5dz64ZQL; Wed, 20 Aug 2025 08:10:39 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4c6Jzf5tNyz3c95; Wed, 20 Aug 2025 08:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1755677438; 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=SS4U7c1N+wBJF4Sorn1E7IL0Sd8hr3u6LIDDwbe/chk=; b=Bn22D/drwGCsoHOSGAMf8rAtyplEArTZf29mQ/ZBPb5324wip6pIBBcgoIcf1Hmg0Dvj6V KVwu8enM6pqxYqB4miWEPleNmiKEMHXRbZJr1+uEitW+PMLxiDIOHBLeBImMKUtCTncoYs HNZrHiJhxeJdz/UypPFXIBt+waKMkD0XgrN24vT69WqgI7MOn34DUfq782+3oiOpID46Rn q5nVXsJ0iNjPOZNWYHEaPZyu/MxEJ8eHTGSpzeRXctMXxI9KoCawcWAAiAeFxG2wZfRChA EhF3O2M/8WmWeqkmtdm5rjK0oCHRunDaU1W1itlM85nObdmQOojam+ORdECGsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1755677438; 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=SS4U7c1N+wBJF4Sorn1E7IL0Sd8hr3u6LIDDwbe/chk=; b=t9iqnudAdqVucMEEgKFezTlL/Trn+RuEy/ay9MWZlb+zcexQoU0LoVYOJmJJaBCsX3I/YP gxxQS6VK2NtGXxFdpFm0NvjFkOixoW56W6H5I2XB+9zCYbLGdIPGZCOH9ZZOuM0lgJjyAx lqi0k9XwAt334Pd2YsyT4OumEbyv4pRB5PABYd0KfM7JpnKc97WTIB3laaMePNe8s9xQSh mp4cDoX65uTFX5B88TJ/ay6n8BRrSv+aULQiJLsmdhFPOq7rqb7DCrrKX3iz5PA/ABXV3h ulmm4+12YqLXvoTt8tQugKT8bqEgHeZMYNVEkOr3GuQBjgMoLBUzoxW2gZahIw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1755677438; a=rsa-sha256; cv=none; b=AItQWbNlPVNN5ppxVuOVOkXmQVcVuV4/PDC8pskmqRAHjMoHT7YEvwITlYeVY1fpvN/fmy V1UGdDcY8BI0FER3f9OiVZ4poBMf00lJujFzMldIUjYGfX3IYOwZNayEwwOvCqpPCxTz7s oEx6w5LMmAvRtvJ1Dv5B57JPbTg07PCatw1WWXeRRjBMAGYduYW0NjqzwE8Ep3jFQ1EVFO RV7syRK2BrqqLo1Ck2RRSvetCZ28nLcDnwqESJVd4lnm5cFda5R/YqvpG8V95+hjCjcsJv Pmtc901TZ8hAhuX4sV/d6kQAU/SaUtx3uWOBks0exskD4HHE0ga6eL02f9eXjw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4c6Jzf5Pwgz14kx; Wed, 20 Aug 2025 08:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57K8Ac9U066012; Wed, 20 Aug 2025 08:10:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57K8AcXw066009; Wed, 20 Aug 2025 08:10:38 GMT (envelope-from git) Date: Wed, 20 Aug 2025 08:10:38 GMT Message-Id: <202508200810.57K8AcXw066009@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 95fda90b84d7 - main - pf: rewrite the pf_state_peer_ntoh and pf_state_peer_hton macros as functions. 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: 95fda90b84d79959109b781db6dab4f5547203b4 Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=95fda90b84d79959109b781db6dab4f5547203b4 commit 95fda90b84d79959109b781db6dab4f5547203b4 Author: Kristof Provost AuthorDate: 2025-08-04 15:46:32 +0000 Commit: Kristof Provost CommitDate: 2025-08-20 08:08:46 +0000 pf: rewrite the pf_state_peer_ntoh and pf_state_peer_hton macros as functions. I can read this code as functions, but it takes too much effort as macros. Obtained from: OpenBSD, dlg , 4103306ead Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/net/pfvar.h | 37 ++++--------------------------------- sys/netpfil/pf/pf.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 33 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index fe12df0f7dc8..d6c13470f2eb 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1303,39 +1303,10 @@ extern pflog_packet_t *pflog_packet_ptr; /* for copies to/from network byte order */ /* ioctl interface also uses network byte order */ -#define pf_state_peer_hton(s,d) do { \ - (d)->seqlo = htonl((s)->seqlo); \ - (d)->seqhi = htonl((s)->seqhi); \ - (d)->seqdiff = htonl((s)->seqdiff); \ - (d)->max_win = htons((s)->max_win); \ - (d)->mss = htons((s)->mss); \ - (d)->state = (s)->state; \ - (d)->wscale = (s)->wscale; \ - if ((s)->scrub) { \ - (d)->scrub.pfss_flags = \ - htons((s)->scrub->pfss_flags & PFSS_TIMESTAMP); \ - (d)->scrub.pfss_ttl = (s)->scrub->pfss_ttl; \ - (d)->scrub.pfss_ts_mod = htonl((s)->scrub->pfss_ts_mod);\ - (d)->scrub.scrub_flag = PF_SCRUB_FLAG_VALID; \ - } \ -} while (0) - -#define pf_state_peer_ntoh(s,d) do { \ - (d)->seqlo = ntohl((s)->seqlo); \ - (d)->seqhi = ntohl((s)->seqhi); \ - (d)->seqdiff = ntohl((s)->seqdiff); \ - (d)->max_win = ntohs((s)->max_win); \ - (d)->mss = ntohs((s)->mss); \ - (d)->state = (s)->state; \ - (d)->wscale = (s)->wscale; \ - if ((s)->scrub.scrub_flag == PF_SCRUB_FLAG_VALID && \ - (d)->scrub != NULL) { \ - (d)->scrub->pfss_flags = \ - ntohs((s)->scrub.pfss_flags) & PFSS_TIMESTAMP; \ - (d)->scrub->pfss_ttl = (s)->scrub.pfss_ttl; \ - (d)->scrub->pfss_ts_mod = ntohl((s)->scrub.pfss_ts_mod);\ - } \ -} while (0) +void pf_state_peer_hton(const struct pf_state_peer *, + struct pf_state_peer_export *); +void pf_state_peer_ntoh(const struct pf_state_peer_export *, + struct pf_state_peer *); #define pf_state_counter_hton(s,d) do { \ d[0] = htonl((s>>32)&0xffffffff); \ diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 9d83e7b82e6f..8cd4fff95b15 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -2069,6 +2069,44 @@ pf_find_state_all_exists(const struct pf_state_key_cmp *key, u_int dir) return (false); } +void +pf_state_peer_hton(const struct pf_state_peer *s, struct pf_state_peer_export *d) +{ + d->seqlo = htonl(s->seqlo); + d->seqhi = htonl(s->seqhi); + d->seqdiff = htonl(s->seqdiff); + d->max_win = htons(s->max_win); + d->mss = htons(s->mss); + d->state = s->state; + d->wscale = s->wscale; + if (s->scrub) { + d->scrub.pfss_flags = htons( + s->scrub->pfss_flags & PFSS_TIMESTAMP); + d->scrub.pfss_ttl = (s)->scrub->pfss_ttl; + d->scrub.pfss_ts_mod = htonl((s)->scrub->pfss_ts_mod); + d->scrub.scrub_flag = PF_SCRUB_FLAG_VALID; + } +} + +void +pf_state_peer_ntoh(const struct pf_state_peer_export *s, struct pf_state_peer *d) +{ + d->seqlo = ntohl(s->seqlo); + d->seqhi = ntohl(s->seqhi); + d->seqdiff = ntohl(s->seqdiff); + d->max_win = ntohs(s->max_win); + d->mss = ntohs(s->mss); + d->state = s->state; + d->wscale = s->wscale; + if (s->scrub.scrub_flag == PF_SCRUB_FLAG_VALID && + d->scrub != NULL) { + d->scrub->pfss_flags = ntohs(s->scrub.pfss_flags) & + PFSS_TIMESTAMP; + d->scrub->pfss_ttl = s->scrub.pfss_ttl; + d->scrub->pfss_ts_mod = ntohl(s->scrub.pfss_ts_mod); + } +} + struct pf_udp_mapping * pf_udp_mapping_create(sa_family_t af, struct pf_addr *src_addr, uint16_t src_port, struct pf_addr *nat_addr, uint16_t nat_port)