diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-06 14:03:45 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-06 14:03:45 +0200 |
commit | cc4251f22b0eb84fb3dcd3e95307c7520b3ebdde (patch) | |
tree | f819d32066eb9ded64d61ae7c882ef176976ca81 /src/expr/rt.rs | |
parent | a78962f91ae04da631de4908851d1d3e7983d032 (diff) |
add support for rt expression
Diffstat (limited to 'src/expr/rt.rs')
-rw-r--r-- | src/expr/rt.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/expr/rt.rs b/src/expr/rt.rs new file mode 100644 index 0000000..5ed9272 --- /dev/null +++ b/src/expr/rt.rs @@ -0,0 +1,37 @@ +use rustables_macros::{nfnetlink_enum, nfnetlink_struct}; + +use crate::sys::{ + NFTA_RT_DREG, NFTA_RT_KEY, NFT_RT_CLASSID, NFT_RT_NEXTHOP4, NFT_RT_NEXTHOP6, NFT_RT_TCPMSS, +}; + +use super::{Expression, Register}; + +/// Kind of routing information. +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +#[nfnetlink_enum(u32, nested = true)] +pub enum RtKey { + /// Class ID. + ClassID = NFT_RT_CLASSID, + /// Next IPv4 hop. + NextHop4 = NFT_RT_NEXTHOP4, + /// Next IPv6 hop. + NextHop6 = NFT_RT_NEXTHOP6, + /// TCP MSS. + TCPMSS = NFT_RT_TCPMSS, +} + +/// Loads routing information into a register. +#[derive(Default, Debug, Clone, PartialEq, Eq)] +#[nfnetlink_struct(nested = true)] +pub struct Rt { + #[field(NFTA_RT_DREG)] + dreg: Register, + #[field(NFTA_RT_KEY)] + key: RtKey, +} + +impl Expression for Rt { + fn get_name() -> &'static str { + "rt" + } +} |