Extracted form perl api.

Signed-off-by: Dietmar Maurer <[email protected]>
---
 .../src/cluster_options.rs                    | 61 +++++++++++++++++++
 proxmox-firewall-api-types/src/lib.rs         |  3 +
 2 files changed, 64 insertions(+)
 create mode 100644 proxmox-firewall-api-types/src/cluster_options.rs

diff --git a/proxmox-firewall-api-types/src/cluster_options.rs 
b/proxmox-firewall-api-types/src/cluster_options.rs
new file mode 100644
index 00000000..bd01a529
--- /dev/null
+++ b/proxmox-firewall-api-types/src/cluster_options.rs
@@ -0,0 +1,61 @@
+use proxmox_schema::{api, ApiStringFormat};
+
+use super::{FirewallFWPolicy, FirewallIOPolicy, FirewallLogRateLimit};
+
+#[api(
+    properties: {
+        ebtables: {
+            default: true,
+            optional: true,
+        },
+        enable: {
+            default: 0,
+            minimum: 0,
+            optional: true,
+            type: Integer,
+        },
+        log_ratelimit: {
+            format: 
&ApiStringFormat::PropertyString(&FirewallLogRateLimit::API_SCHEMA),
+            optional: true,
+            type: String,
+        },
+        policy_forward: {
+            optional: true,
+            type: FirewallFWPolicy,
+        },
+        policy_in: {
+            optional: true,
+            type: FirewallIOPolicy,
+        },
+        policy_out: {
+            optional: true,
+            type: FirewallIOPolicy,
+        },
+    },
+)]
+/// Cluster Firewall Options
+#[derive(Debug, serde::Deserialize, serde::Serialize)]
+pub struct FirewallClusterOptions {
+    /// Enable ebtables rules cluster wide.
+    #[serde(deserialize_with = "proxmox_serde::perl::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub ebtables: Option<bool>,
+
+    /// Enable or disable the firewall cluster wide.
+    #[serde(deserialize_with = "proxmox_serde::perl::deserialize_u64")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub enable: Option<u64>,
+
+    /// Log ratelimiting settings
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub log_ratelimit: Option<String>,
+
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub policy_forward: Option<FirewallFWPolicy>,
+
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub policy_in: Option<FirewallIOPolicy>,
+
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub policy_out: Option<FirewallIOPolicy>,
+}
diff --git a/proxmox-firewall-api-types/src/lib.rs 
b/proxmox-firewall-api-types/src/lib.rs
index d9ff4548..cbd4b804 100644
--- a/proxmox-firewall-api-types/src/lib.rs
+++ b/proxmox-firewall-api-types/src/lib.rs
@@ -5,3 +5,6 @@ pub use log::{
 
 mod policy;
 pub use policy::{FirewallFWPolicy, FirewallIOPolicy};
+
+mod cluster_options;
+pub use cluster_options::FirewallClusterOptions;
-- 
2.47.3



Reply via email to