From nobody Thu Sep 25 12:41:49 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 4cXYHy2N6Gz68SGk; Thu, 25 Sep 2025 12:41:50 +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 4cXYHy0h4zz42qb; Thu, 25 Sep 2025 12:41:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758804110; 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=q3O/hT+PZYuA6Kt4AbGPsqbMkSq7nkmF+erSu7vKoTE=; b=f9VHZ+5gnqaJdG128EpV2u2t2Yy7jH5elqJUk+k3tknU4DnowxG5yXMpfFfRBvg5XMoQF+ 12AYO2TPfWFeUJych0i6RdQUY+FrpIc+bqmmrcSZFOY4DAqa9amNCrCtAB46KlIavnt17l /xWBzqxKbHlia+rU/XT0/RyZETPToNmsoM4rIqEih4KKJxDIpid+tMs0AAEJmQbjz5hPci TF+mJEbqD0/MINHxCmqc2HtCWZ/ujsSFcCNzemCy6r11xB4LRrdj8/VPZ3LcbsV9sA2lH4 EobHz7EJQ0Hc4BTrHhHJXGAbFKKFgXaVrEqLXebDA+QWLCBna0ZmNaYLfn1PdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1758804110; 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=q3O/hT+PZYuA6Kt4AbGPsqbMkSq7nkmF+erSu7vKoTE=; b=EUw7Ywa6kTIjf6vIRPSFIiVo9Ut+bc97w1VqKeVbJWJO5psQqMXZTwvw86zHKmmW7uDOfc wdlE5b2peJyj4ODP++IMTHnJS5xiOEjXMAnoJGH+je+ouMvbRSuUxNER+91gmBideBi3JO Wgg1uQLZyBhArkApQIjdP1Tr3QncE+fGaacboV9GiUW0H8QID9v0G1BBNJikSYoEPPTgUr SeUOO3eFPNmBp+yWqoDTWByCSHU6ACmyW3wG3iBzmySmtdrYZtpKSwG/T6dQEQLemgnMrX k91+h2Mmct+GeRiDCn+e/+vlgdf4FX3Hyawew6hlev1J0u4CT/HvpDwjscXVcg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1758804110; a=rsa-sha256; cv=none; b=oHcsqBQ1oSjIMSWZ+gbuaKJ+wsTGhxjKNE8lmjPLhPcgB9/UlcSyyUw/WeObhSuBfmEyRp sPwUhJNn9lt1M9j6/DsP2B0di+EwS757AiXbF3aMT9ZU8OKWs21wQVGfYuDtyURQBgMHMB NZ26+WszT7keElJpqEfymweEhwEENeirTXnWDpigHDUNDlzIOppOl8BUtR218m4UXQXEmN /wE701HMK1TV0yzx7naTgbWN13himnhCNoehUdIGXp7lQW2T5M48XpmEC+lh7iIU/r/ubC 1Wor0CyYu5x/R2RibNSgqMONgu+XOK/LHyFmTvS80pbTAJpDm2pV/tHZ4dz3aw== 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 4cXYHy0BrRz1H6b; Thu, 25 Sep 2025 12:41:50 +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 58PCfnkP004927; Thu, 25 Sep 2025 12:41:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58PCfncS004924; Thu, 25 Sep 2025 12:41:49 GMT (envelope-from git) Date: Thu, 25 Sep 2025 12:41:49 GMT Message-Id: <202509251241.58PCfncS004924@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: b84666f798e8 - main - pf: export expiration time as time_t 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: b84666f798e872efd356c5743640e3683ab82f9d Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=b84666f798e872efd356c5743640e3683ab82f9d commit b84666f798e872efd356c5743640e3683ab82f9d Author: Kristof Provost AuthorDate: 2025-08-28 16:49:06 +0000 Commit: Kristof Provost CommitDate: 2025-09-25 12:41:11 +0000 pf: export expiration time as time_t time_t has a different size on different platforms (i.e. 32-bit on i386, 64-bit on others). Rather than always exporting it as 64-bits use the platform-native size. This means we can safely write directly into a time_t variable, which we can't do on i386 eif we export 64 bits. Sponsored by: Rubicon Communications, LLC ("Netgate") --- lib/libpfctl/libpfctl.c | 2 +- sys/netlink/netlink_message_writer.h | 6 ++++++ sys/netlink/netlink_snl.h | 11 +++++++++++ sys/netpfil/pf/pf_nl.c | 2 +- sys/netpfil/pf/pf_nl.h | 2 +- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index e38469643571..4b579de38ad0 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -1699,7 +1699,7 @@ static struct snl_attr_parser ap_getrule[] = { { .type = PF_RT_MAX_PKT_SIZE, .off =_OUT(r.max_pkt_size), .cb = snl_attr_get_uint16 }, { .type = PF_RT_TYPE_2, .off = _OUT(r.type), .cb = snl_attr_get_uint16 }, { .type = PF_RT_CODE_2, .off = _OUT(r.code), .cb = snl_attr_get_uint16 }, - { .type = PF_RT_EXPTIME, .off = _OUT(r.exptime), .cb = snl_attr_get_uint64 }, + { .type = PF_RT_EXPTIME, .off = _OUT(r.exptime), .cb = snl_attr_get_time_t }, }; #undef _OUT SNL_DECLARE_PARSER(getrule_parser, struct genlmsghdr, snl_f_p_empty, ap_getrule); diff --git a/sys/netlink/netlink_message_writer.h b/sys/netlink/netlink_message_writer.h index 83f925e8d93d..ad2099a4d636 100644 --- a/sys/netlink/netlink_message_writer.h +++ b/sys/netlink/netlink_message_writer.h @@ -283,6 +283,12 @@ nlattr_add_s64(struct nl_writer *nw, uint16_t attrtype, int64_t value) return (nlattr_add(nw, attrtype, sizeof(int64_t), &value)); } +static inline bool +nlattr_add_time_t(struct nl_writer *nw, uint16_t attrtype, time_t value) +{ + return (nlattr_add(nw, attrtype, sizeof(time_t), &value)); +} + static inline bool nlattr_add_flag(struct nl_writer *nw, uint16_t attrtype) { diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index 586716776bc5..6dd8a9cbdb35 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -630,6 +630,17 @@ snl_attr_get_int64(struct snl_state *ss, struct nlattr *nla, const void *arg, return (snl_attr_get_uint64(ss, nla, arg, target)); } +static inline bool +snl_attr_get_time_t(struct snl_state *ss __unused, struct nlattr *nla, + const void *arg __unused, void *target) +{ + if (NLA_DATA_LEN(nla) == sizeof(time_t)) { + memcpy(target, NLA_DATA_CONST(nla), sizeof(time_t)); + return (true); + } + return (false); +} + static inline bool snl_attr_get_string(struct snl_state *ss __unused, struct nlattr *nla, const void *arg __unused, void *target) diff --git a/sys/netpfil/pf/pf_nl.c b/sys/netpfil/pf/pf_nl.c index ff3edd43e3a5..082b9b565153 100644 --- a/sys/netpfil/pf/pf_nl.c +++ b/sys/netpfil/pf/pf_nl.c @@ -1025,7 +1025,7 @@ pf_handle_getrule(struct nlmsghdr *hdr, struct nl_pstate *npt) nlattr_add_u64(nw, PF_RT_SRC_NODES_NAT, counter_u64_fetch(rule->src_nodes[PF_SN_NAT])); nlattr_add_u64(nw, PF_RT_SRC_NODES_ROUTE, counter_u64_fetch(rule->src_nodes[PF_SN_ROUTE])); nlattr_add_pf_threshold(nw, PF_RT_PKTRATE, &rule->pktrate); - nlattr_add_u64(nw, PF_RT_EXPTIME, time_second - (time_uptime - rule->exptime)); + nlattr_add_time_t(nw, PF_RT_EXPTIME, time_second - (time_uptime - rule->exptime)); error = pf_kanchor_copyout(ruleset, rule, anchor_call, sizeof(anchor_call)); MPASS(error == 0); diff --git a/sys/netpfil/pf/pf_nl.h b/sys/netpfil/pf/pf_nl.h index 38891339450e..c46c8f2b2592 100644 --- a/sys/netpfil/pf/pf_nl.h +++ b/sys/netpfil/pf/pf_nl.h @@ -285,7 +285,7 @@ enum pf_rule_type_t { PF_RT_MAX_PKT_SIZE = 83, /* u16 */ PF_RT_TYPE_2 = 84, /* u16 */ PF_RT_CODE_2 = 85, /* u16 */ - PF_RT_EXPTIME = 86, /* u64 */ + PF_RT_EXPTIME = 86, /* time_t */ }; enum pf_addrule_type_t {