use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use strum_macros::EnumString;
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum NfFamily {
IP,
IP6,
INet,
ARP,
Bridge,
NetDev,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum NfChainType {
Filter,
Route,
NAT,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum NfChainPolicy {
Accept,
Drop,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum NfHook {
Ingress,
Prerouting,
Forward,
Input,
Output,
Postrouting,
Egress,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum CTHProto {
TCP,
UDP,
DCCP,
SCTP,
GRE,
ICMPv6,
ICMP,
Generic,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
pub enum RejectCode {
#[serde(rename = "admin-prohibited")]
AdminProhibited,
#[serde(rename = "port-unreachable")]
PortUnreach,
#[serde(rename = "no-route")]
NoRoute,
#[serde(rename = "host-unreachable")]
HostUnreach,
#[serde(rename = "net-unreachable")]
NetUnreach,
#[serde(rename = "prot-unreachable")]
ProtUnreach,
#[serde(rename = "net-prohibited")]
NetProhibited,
#[serde(rename = "host-prohibited")]
HostProhibited,
#[serde(rename = "addr-unreachable")]
AddrUnreach,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, EnumString, Hash, JsonSchema)]
#[serde(rename_all = "lowercase")]
#[strum(serialize_all = "lowercase")]
pub enum SynProxyFlag {
Timestamp,
#[serde(rename = "sack-perm")]
#[strum(serialize = "sack-perm")]
SackPerm,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum NfTimeUnit {
Second,
Minute,
Hour,
Day,
Week,
}