#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct Rule {
#[serde(rename = "description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "destination_ips", skip_serializing_if = "Option::is_none")]
pub destination_ips: Option<Vec<String>>,
#[serde(rename = "direction")]
pub direction: Direction,
#[serde(rename = "port", skip_serializing_if = "Option::is_none")]
pub port: Option<String>,
#[serde(rename = "protocol")]
pub protocol: Protocol,
#[serde(rename = "source_ips", skip_serializing_if = "Option::is_none")]
pub source_ips: Option<Vec<String>>,
}
impl Rule {
#![allow(clippy::too_many_arguments)]
pub fn new(direction: Direction, protocol: Protocol) -> Rule {
Rule {
description: None,
destination_ips: None,
direction,
port: None,
protocol,
source_ips: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Direction {
#[serde(rename = "in")]
In,
#[serde(rename = "out")]
Out,
}
impl Default for Direction {
fn default() -> Direction {
Self::In
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Protocol {
#[serde(rename = "esp")]
Esp,
#[serde(rename = "gre")]
Gre,
#[serde(rename = "icmp")]
Icmp,
#[serde(rename = "tcp")]
Tcp,
#[serde(rename = "udp")]
Udp,
}
impl Default for Protocol {
fn default() -> Protocol {
Self::Esp
}
}