From nobody Mon Aug 10 14:34:17 2026 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 4hJchT4F2Cz6nsWn for ; Mon, 10 Aug 2026 14:34:17 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hJchT2G05z3bH5 for ; Mon, 10 Aug 2026 14:34:17 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786372457; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xoEsb8oAo3UQ9Bj229HJYEo8j+AI+jgyD4df0MYdnqc=; b=Ml4QCSSF157vHwp1/R8qnEVGcEnmY2FVNVEwYLB086Mq4wGLU980fEiOJocU0CmrnlQxQt P2SJiGL1FXAzdZA+CNtRZ6Y1irxCBS4QHmHVHOUj9RSrUAYIdEtjwAMahiaC+Y1qOgbzlt w3mhON/6AVEDbnytm3ep1CeGrnezzRRG17L4Rlo66x9Knb34La3DuglvFB/8z2nRMTdir+ 1ceyhjmHWOYq4ozxcEvaCp//XeGs0tBgQCK3Qc2GwcuF4ZtD4v30NbCW+CDtFRn3c5hA0Y Y1HW0iZtWTXEAwHplr0ycw5zXyaiIBRMCqeF1ekQ/RyFYIYtz+mk/XiQwJUUeA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786372457; a=rsa-sha256; cv=none; b=TN0d+ieiZxx948SvZ76Rrue+G4CW0T4ddJvRD3DiUrla2Rj84w25Iq6SPG7gwUItwPpiA6 VaaszehDfLdDQ7tKge8YMIm3h4Mo+khIokxyN0hEH15JDDGXiKgt0t8Iy52TSjLYL+shiR f9dac0iQJyGN73hwqZvMBjeKMYxlvIk+3WQmJLg1TNG8Op0y98mgjDK6vAT1u7JhTbZo5l 6HlawWLBjELX4gsFfNyH+eYLNvd8JKuZTQTtnvZz1fkorA/r01rYOkAo6Xq4rY/P0fMRpD UXWCZy3d0zYp/Uz326kmfwpKQxygiF6l2SClamoP0K9ndsElWkcuYCXCX8gm9Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786372457; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xoEsb8oAo3UQ9Bj229HJYEo8j+AI+jgyD4df0MYdnqc=; b=P6egr6Pl4jTYfWDTOAfGnIta608I7qRonf18s1+OF+CGXDjY27/TRowzNxroydW0RnEDw9 laqceguj67aNu3IErjz00CT4mBNFsz3Wit64HqCXosnBBysgIsRjnX5EXnGkPTYrBiwznD p6vu0IK2Je1uZPtxFohv3CNgBwzwMtF2kia+pXzbEEbTCb77PxbB6l/1muLZFCVQ4opM28 +AAtTxJbOnBblC3XxBC8xQcstcBK8q8oSEwisKXF55TV7GGtvwaK7dB+4RFhxNh4ZLdct8 73Ckn+S9wahxgLe/4TBGfgUhCjMT1uVbe1ke3YeWh1wg2rycPf56RblYgRTJLg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hJchT1K97z1CC9 for ; Mon, 10 Aug 2026 14:34:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 250cf by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 10 Aug 2026 14:34:17 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Ishan Agrawal From: Kristof Provost Subject: git: 1d926be8824a - main - libsysdecode : add attribute parsing for PFNL_CMD_KILLSTATES 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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: 1d926be8824a8cbf620dc12a5f9fe5623930bfd0 Auto-Submitted: auto-generated Date: Mon, 10 Aug 2026 14:34:17 +0000 Message-Id: <6a79e169.250cf.55efc16d@gitrepo.freebsd.org> The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=1d926be8824a8cbf620dc12a5f9fe5623930bfd0 commit 1d926be8824a8cbf620dc12a5f9fe5623930bfd0 Author: Ishan Agrawal AuthorDate: 2026-08-08 05:29:25 +0000 Commit: Kristof Provost CommitDate: 2026-08-10 14:33:31 +0000 libsysdecode : add attribute parsing for PFNL_CMD_KILLSTATES Signed-off-by: Ishan Agrawal Sponsored-by: Google LLC (GSoC 2026) Reviewed by: kp --- lib/libsysdecode/netlink.c | 84 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 4 deletions(-) diff --git a/lib/libsysdecode/netlink.c b/lib/libsysdecode/netlink.c index 6e2af72374b0..1d6200980c9e 100644 --- a/lib/libsysdecode/netlink.c +++ b/lib/libsysdecode/netlink.c @@ -78,6 +78,20 @@ nlattr_decode_in6_addr(FILE *fp, const struct nlattr *attr, fprintf(fp, "%s", buf); } +static void +nlattr_decode_uint64(FILE *fp, const struct nlattr *attr, const char *attr_name, + const void *args __unused) +{ + uint64_t target; + + if (NLA_DATA_LEN(attr) < (int)sizeof(target)) + return; + + memcpy(&target, NLA_DATA_CONST(attr), sizeof(uint64_t)); + + fprintf(fp, "%s=%ju", attr_name, target); +} + static void nlattr_decode_uint32(FILE *fp, const struct nlattr *attr, const char *attr_name, const void *args) @@ -94,6 +108,20 @@ nlattr_decode_uint32(FILE *fp, const struct nlattr *attr, const char *attr_name, fprintf(fp, "%s=%u", attr_name, target); } +static void +nlattr_decode_uint16(FILE *fp, const struct nlattr *attr, const char *attr_name, + const void *args __unused) +{ + uint16_t target; + + if (NLA_DATA_LEN(attr) < (int)sizeof(target)) + return; + + memcpy(&target, NLA_DATA_CONST(attr), sizeof(uint16_t)); + + fprintf(fp, "%s=%u", attr_name, target); +} + static void nlattr_decode_uint8(FILE *fp, const struct nlattr *attr, const char *attr_name, const void *args) @@ -110,6 +138,25 @@ nlattr_decode_uint8(FILE *fp, const struct nlattr *attr, const char *attr_name, fprintf(fp, "%s=%u", attr_name, target); } +static void +nlattr_decode_bool(FILE *fp, const struct nlattr *attr, const char *attr_name, + const void *args __unused) +{ + bool target; + + if (NLA_DATA_LEN(attr) < (int)sizeof(target)) + return; + + memcpy(&target, NLA_DATA_CONST(attr), sizeof(bool)); + + fprintf(fp, "%s=", attr_name); + + if (target) + fprintf(fp, "TRUE"); + else + fprintf(fp, "FALSE"); +} + static void nlattr_decode_string(FILE *fp, const struct nlattr *attr, const char *attr_name, const void *args) @@ -218,8 +265,32 @@ static const struct nlattr_decoder nla_d_add_addr[] = { { .type = PF_AA_ADDR, .attr_name = "addr", .cb = nlattr_decode_nested , .args = &pool_addr_decoder}, { .type = PF_AA_WHICH, .attr_name = "which", .cb = nlattr_decode_uint32 }, }; -NL_DECLARE_ATTR_DECODER(addr_parser, nla_d_add_addr); - +NL_DECLARE_ATTR_DECODER(addr_decoder, nla_d_add_addr); + +static const struct nlattr_decoder nla_d_ruleaddr[] = { + { .type = PF_RAT_ADDR, .attr_name = "addr", .cb = nlattr_decode_nested, .args = &addr_wrap_decoder }, + { .type = PF_RAT_SRC_PORT, .attr_name = "src_port", .cb = nlattr_decode_uint16 }, + { .type = PF_RAT_DST_PORT, .attr_name = "dst_port", .cb = nlattr_decode_uint16 }, + { .type = PF_RAT_NEG, .attr_name = "neg", .cb = nlattr_decode_uint8 }, + { .type = PF_RAT_OP, .attr_name = "op", .cb = nlattr_decode_uint8 }, +}; +NL_DECLARE_ATTR_DECODER(rule_addr_decoder, nla_d_ruleaddr); + +static const struct nlattr_decoder nla_d_clear_states[] = { + { .type = PF_CS_CMP_ID, .attr_name = "cmp_id", .cb = nlattr_decode_uint64 }, + { .type = PF_CS_CMP_CREATORID, .attr_name = "cmp_creatorid", .cb = nlattr_decode_uint32 }, + { .type = PF_CS_CMP_DIR, .attr_name = "cmp_dir", .cb = nlattr_decode_uint8 }, + { .type = PF_CS_AF, .attr_name = "af", .cb = nlattr_decode_uint8 }, + { .type = PF_CS_PROTO, .attr_name = "proto", .cb = nlattr_decode_uint8 }, + { .type = PF_CS_SRC, .attr_name = "src", .cb = nlattr_decode_nested, .args = &rule_addr_decoder }, + { .type = PF_CS_DST, .attr_name = "dst", .cb = nlattr_decode_nested, .args = &rule_addr_decoder }, + { .type = PF_CS_RT_ADDR, .attr_name = "rt_addr", .cb = nlattr_decode_nested, .args = &rule_addr_decoder }, + { .type = PF_CS_IFNAME, .attr_name = "ifname", .cb = nlattr_decode_string }, + { .type = PF_CS_LABEL, .attr_name = "label", .cb = nlattr_decode_string }, + { .type = PF_CS_KILL_MATCH, .attr_name = "kill_match", .cb = nlattr_decode_bool }, + { .type = PF_CS_NAT, .attr_name = "nat", .cb = nlattr_decode_bool }, +}; +NL_DECLARE_ATTR_DECODER(killclear_states_decoder, nla_d_clear_states); static void sysdecode_netlink_pf(FILE *fp, const struct genlmsghdr *genl, size_t nlm_len) @@ -238,11 +309,16 @@ sysdecode_netlink_pf(FILE *fp, const struct genlmsghdr *genl, size_t nlm_len) switch (cmd) { case PFNL_CMD_GET_ADDR: nl_decode_attrs_raw(fp, nla, nlm_len, - addr_parser.decoders, addr_parser.count); + addr_decoder.decoders, addr_decoder.count); break; case PFNL_CMD_GET_ADDRS: nl_decode_attrs_raw(fp, nla, nlm_len, - addr_parser.decoders, addr_parser.count); + addr_decoder.decoders, addr_decoder.count); + break; + case PFNL_CMD_KILLSTATES: + nl_decode_attrs_raw(fp, nla, nlm_len, + killclear_states_decoder.decoders, + killclear_states_decoder.count); break; default: break;