use rustables_macros::{nfnetlink_enum, nfnetlink_struct};
use crate::sys;
use super::Expression;
impl Expression for Reject {
fn get_name() -> &'static str {
"reject"
}
}
#[derive(Clone, PartialEq, Eq, Default, Debug)]
#[nfnetlink_struct]
pub struct Reject {
#[field(sys::NFTA_REJECT_TYPE, name_in_functions = "type")]
reject_type: RejectType,
#[field(sys::NFTA_REJECT_ICMP_CODE)]
icmp_code: IcmpCode,
}
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
#[nfnetlink_enum(u32)]
pub enum RejectType {
IcmpUnreach = sys::NFT_REJECT_ICMP_UNREACH,
TcpRst = sys::NFT_REJECT_TCP_RST,
IcmpxUnreach = sys::NFT_REJECT_ICMPX_UNREACH,
}
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
#[nfnetlink_enum(u8)]
pub enum IcmpCode {
NoRoute = sys::NFT_REJECT_ICMPX_NO_ROUTE,
PortUnreach = sys::NFT_REJECT_ICMPX_PORT_UNREACH,
HostUnreach = sys::NFT_REJECT_ICMPX_HOST_UNREACH,
AdminProhibited = sys::NFT_REJECT_ICMPX_ADMIN_PROHIBITED,
}