aboutsummaryrefslogtreecommitdiff
path: root/src/expr/rt.rs
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-05-06 14:03:45 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-05-06 14:03:45 +0200
commitcc4251f22b0eb84fb3dcd3e95307c7520b3ebdde (patch)
treef819d32066eb9ded64d61ae7c882ef176976ca81 /src/expr/rt.rs
parenta78962f91ae04da631de4908851d1d3e7983d032 (diff)
add support for rt expression
Diffstat (limited to 'src/expr/rt.rs')
-rw-r--r--src/expr/rt.rs37
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"
+ }
+}