From: Dietmar Maurer <dietmar@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [RFC proxmox 22/22] firewall-api-types: add FirewallIpsetListEntry and FirewallIpsetEntry api types
Date: Mon, 16 Feb 2026 11:44:00 +0100 [thread overview]
Message-ID: <20260216104401.3959270-23-dietmar@proxmox.com> (raw)
In-Reply-To: <20260216104401.3959270-1-dietmar@proxmox.com>
FirewallIpsetListEntry represents an ipset in a listing (GET /cluster/firewall/ipset).
FirewallIpsetEntry represents a single entry within an ipset (GET /cluster/firewall/ipset/{name}).
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
---
proxmox-firewall-api-types/src/ipset.rs | 63 +++++++++++++++++++++++++
proxmox-firewall-api-types/src/lib.rs | 4 +-
2 files changed, 66 insertions(+), 1 deletion(-)
diff --git a/proxmox-firewall-api-types/src/ipset.rs b/proxmox-firewall-api-types/src/ipset.rs
index 02659394..5b870873 100644
--- a/proxmox-firewall-api-types/src/ipset.rs
+++ b/proxmox-firewall-api-types/src/ipset.rs
@@ -2,6 +2,11 @@ use std::fmt;
use std::str::FromStr;
use anyhow::{bail, Error};
+use serde::{Deserialize, Serialize};
+
+use proxmox_config_digest::ConfigDigest;
+use proxmox_network_types::ip_address::Cidr;
+use proxmox_schema::{api, api_types::COMMENT_SCHEMA};
#[cfg(feature = "enum-fallback")]
use proxmox_fixed_string::FixedString;
@@ -107,6 +112,64 @@ impl FromStr for FirewallIpsetReference {
}
}
+#[api(
+ properties: {
+ name: {
+ type: String,
+ format: &proxmox_schema::ApiStringFormat::VerifyFn(verify_ipset_name),
+ },
+ comment: {
+ optional: true,
+ schema: COMMENT_SCHEMA,
+ },
+ },
+)]
+/// Firewall ipset list entry.
+#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
+pub struct FirewallIpsetListEntry {
+ /// The name of the ipset entry.
+ pub name: String,
+
+ /// Digest to detect concurrent modifications.
+ pub digest: ConfigDigest,
+
+ /// Descriptive comment.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub comment: Option<String>,
+}
+
+#[api(
+ properties: {
+ cidr: {
+ type: String,
+ },
+ comment: {
+ optional: true,
+ schema: COMMENT_SCHEMA,
+ },
+ nomatch: {
+ optional: true,
+ },
+ },
+)]
+/// Firewall ipset content entry.
+#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
+pub struct FirewallIpsetEntry {
+ /// Network/IP specification in CIDR format.
+ pub cidr: Cidr,
+
+ /// Digest to detect concurrent modifications.
+ pub digest: ConfigDigest,
+
+ /// Descriptive comment.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub comment: Option<String>,
+
+ /// If set to true, the ipset will be used as a "nomatch" ipset.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub nomatch: Option<bool>,
+}
+
#[cfg(test)]
mod tests {
use super::*;
diff --git a/proxmox-firewall-api-types/src/lib.rs b/proxmox-firewall-api-types/src/lib.rs
index 044fc761..9422def7 100644
--- a/proxmox-firewall-api-types/src/lib.rs
+++ b/proxmox-firewall-api-types/src/lib.rs
@@ -11,7 +11,9 @@ mod icmp_type;
pub use icmp_type::{FirewallIcmpType, FirewallIcmpTypeName};
mod ipset;
-pub use ipset::{FirewallIpsetReference, FirewallIpsetScope};
+pub use ipset::{
+ FirewallIpsetEntry, FirewallIpsetListEntry, FirewallIpsetReference, FirewallIpsetScope,
+};
mod log;
pub use log::{
--
2.47.3
next prev parent reply other threads:[~2026-02-16 10:50 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-16 10:43 [RFC proxmox 00/22] New crate for firewall " Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 01/22] firewall-api-types: add new " Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 02/22] firewall-api-types: add README.md Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 03/22] firewall-api-types: add firewall policy types Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 04/22] firewall-api-types: add logging types Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 05/22] firewall-api-types: add FirewallClusterOptions Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 06/22] firewall-api-types: add FirewallGuestOptions Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 07/22] firewall-api-types: add FirewallConntrackHelper enum Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 08/22] firewall-api-types: add FirewallNodeOptions struct Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 09/22] firewall-api-types: add FirewallRef type Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 10/22] firewall-api-types: add FirewallPortList types Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 11/22] firewall-api-types: add FirewallIcmpType Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 12/22] firewall-api-types: add FirewallIpsetReference type Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 13/22] firewall-api-types: add FirewallAliasReference type Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 14/22] firewall-api-types: add firewall address types Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 15/22] firewall-api-types: add FirewallRule type Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 16/22] firewall-api-types: use ConfigDigest from proxmox-config-digest crate Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 17/22] firewall-api-types: use COMMENT_SCHEMA from proxmox-schema crate Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 18/22] firewall-api-types: add FirewallRuleUpdater type Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 19/22] firewall-api-types: refactor FirewallRule and add FirewallRuleListEntry Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 20/22] firewall-api-types: add DeletableFirewallRuleProperty enum Dietmar Maurer
2026-02-16 10:43 ` [RFC proxmox 21/22] firewall-api-types: add FirewallAliasEntry API type Dietmar Maurer
2026-02-16 10:44 ` Dietmar Maurer [this message]
2026-02-17 6:17 ` [RFC proxmox 00/22] New crate for firewall api types Hannes Laimer
2026-02-17 6:39 ` Dietmar Maurer
2026-02-17 8:17 ` Hannes Laimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260216104401.3959270-23-dietmar@proxmox.com \
--to=dietmar@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.