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