aboutsummaryrefslogtreecommitdiff
path: root/tests/expr.rs
diff options
context:
space:
mode:
authorSimon THOBY <git@nightmared.fr>2022-11-13 18:32:22 +0100
committerSimon THOBY <git@nightmared.fr>2022-11-13 18:32:22 +0100
commit22edb0197854bf4f504e833e69b0e545d382f065 (patch)
treef7af8b1f7375de41c2e528ba8ae0a97bd3186d5c /tests/expr.rs
parentf8effdd348e38f51f6ec7b24c4c27e6602538445 (diff)
wip: exprs
Diffstat (limited to 'tests/expr.rs')
-rw-r--r--tests/expr.rs204
1 files changed, 99 insertions, 105 deletions
diff --git a/tests/expr.rs b/tests/expr.rs
index 28bf9da..1a7b6f7 100644
--- a/tests/expr.rs
+++ b/tests/expr.rs
@@ -1,3 +1,4 @@
+use rustables::expr::{ExpressionList, Immediate, Register, VerdictKind};
//use rustables::expr::{
// Bitwise, Cmp, CmpOp, Conntrack, Counter, Expression, HeaderField, IcmpCode, Immediate, Log,
// LogGroup, LogPrefix, Lookup, Meta, Nat, NatType, Payload, Register, Reject, TcpHeaderField,
@@ -10,26 +11,13 @@
//use std::ffi::CStr;
//use std::net::Ipv4Addr;
//
-//mod sys;
-//use sys::*;
-//
-//mod lib;
-//use lib::*;
-//
-//fn get_test_nlmsg_from_expr(
-// rule: &mut Rule,
-// expr: &impl Expression,
-//) -> (nlmsghdr, Nfgenmsg, Vec<u8>) {
-// rule.add_expr(expr);
-//
-// let (nlmsghdr, nfgenmsg, raw_expr) = get_test_nlmsg(rule);
-// assert_eq!(
-// get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
-// NFT_MSG_NEWRULE as u8
-// );
-// (nlmsghdr, nfgenmsg, raw_expr)
-//}
-//
+mod sys;
+use libc::NF_DROP;
+use sys::*;
+
+mod lib;
+use lib::*;
+
//#[test]
//fn bitwise_expr_is_valid() {
// let netmask = Ipv4Addr::new(255, 255, 255, 0);
@@ -202,45 +190,48 @@
// )
//}
//
-//#[test]
-//fn immediate_expr_is_valid() {
-// let immediate = Immediate::new(42u8, Register::Reg1);
-// let mut rule = get_test_rule();
-// let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg_from_expr(&mut rule, &immediate);
-// assert_eq!(nlmsghdr.nlmsg_len, 100);
-//
-// assert_eq!(
-// raw_expr,
-// NetlinkExpr::List(vec![
-// NetlinkExpr::Final(NFTA_RULE_TABLE, TABLE_NAME.to_vec()),
-// NetlinkExpr::Final(NFTA_RULE_CHAIN, CHAIN_NAME.to_vec()),
-// NetlinkExpr::Nested(
-// NFTA_RULE_EXPRESSIONS,
-// vec![NetlinkExpr::Nested(
-// NFTA_LIST_ELEM,
-// vec![
-// NetlinkExpr::Final(NFTA_EXPR_NAME, b"immediate\0".to_vec()),
-// NetlinkExpr::Nested(
-// NFTA_EXPR_DATA,
-// vec![
-// NetlinkExpr::Final(
-// NFTA_IMMEDIATE_DREG,
-// NFT_REG_1.to_be_bytes().to_vec()
-// ),
-// NetlinkExpr::Nested(
-// NFTA_IMMEDIATE_DATA,
-// vec![NetlinkExpr::Final(1u16, 42u8.to_be_bytes().to_vec())]
-// )
-// ]
-// )
-// ]
-// )]
-// )
-// ])
-// .to_raw()
-// );
-//}
-//
+#[test]
+fn immediate_expr_is_valid() {
+ let immediate = Immediate::new_data(vec![42u8], Register::Reg1);
+ let mut rule =
+ get_test_rule().with_expressions(ExpressionList::builder().with_expression(immediate));
+
+ let mut buf = Vec::new();
+ let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
+ assert_eq!(nlmsghdr.nlmsg_len, 100);
+
+ assert_eq!(
+ raw_expr,
+ NetlinkExpr::List(vec![
+ NetlinkExpr::Final(NFTA_RULE_TABLE, TABLE_NAME.as_bytes().to_vec()),
+ NetlinkExpr::Final(NFTA_RULE_CHAIN, CHAIN_NAME.as_bytes().to_vec()),
+ NetlinkExpr::Nested(
+ NFTA_RULE_EXPRESSIONS,
+ vec![NetlinkExpr::Nested(
+ NFTA_LIST_ELEM,
+ vec![
+ NetlinkExpr::Final(NFTA_EXPR_NAME, b"immediate".to_vec()),
+ NetlinkExpr::Nested(
+ NFTA_EXPR_DATA,
+ vec![
+ NetlinkExpr::Final(
+ NFTA_IMMEDIATE_DREG,
+ NFT_REG_1.to_be_bytes().to_vec()
+ ),
+ NetlinkExpr::Nested(
+ NFTA_IMMEDIATE_DATA,
+ vec![NetlinkExpr::Final(1u16, 42u8.to_be_bytes().to_vec())]
+ )
+ ]
+ )
+ ]
+ )]
+ )
+ ])
+ .to_raw()
+ );
+}
+
//#[test]
//fn log_expr_is_valid() {
// let log = Log {
@@ -482,7 +473,7 @@
// .to_raw()
// );
//}
-//
+
//#[test]
//fn reject_expr_is_valid() {
// let code = IcmpCode::NoRoute;
@@ -522,48 +513,51 @@
// .to_raw()
// );
//}
-//
-//#[test]
-//fn verdict_expr_is_valid() {
-// let verdict = Verdict::Drop;
-// let mut rule = get_test_rule();
-// let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg_from_expr(&mut rule, &verdict);
-// assert_eq!(nlmsghdr.nlmsg_len, 104);
-//
-// assert_eq!(
-// raw_expr,
-// NetlinkExpr::List(vec![
-// NetlinkExpr::Final(NFTA_RULE_TABLE, TABLE_NAME.to_vec()),
-// NetlinkExpr::Final(NFTA_RULE_CHAIN, CHAIN_NAME.to_vec()),
-// NetlinkExpr::Nested(
-// NFTA_RULE_EXPRESSIONS,
-// vec![NetlinkExpr::Nested(
-// NFTA_LIST_ELEM,
-// vec![
-// NetlinkExpr::Final(NFTA_EXPR_NAME, b"immediate\0".to_vec()),
-// NetlinkExpr::Nested(
-// NFTA_EXPR_DATA,
-// vec![
-// NetlinkExpr::Final(
-// NFTA_IMMEDIATE_DREG,
-// NFT_REG_VERDICT.to_be_bytes().to_vec()
-// ),
-// NetlinkExpr::Nested(
-// NFTA_IMMEDIATE_DATA,
-// vec![NetlinkExpr::Nested(
-// NFTA_DATA_VERDICT,
-// vec![NetlinkExpr::Final(
-// NFTA_VERDICT_CODE,
-// NF_DROP.to_be_bytes().to_vec()
-// ),]
-// )],
-// ),
-// ]
-// )
-// ]
-// )]
-// )
-// ])
-// .to_raw()
-// );
-//}
+
+#[test]
+fn verdict_expr_is_valid() {
+ let verdict = Immediate::new_verdict(VerdictKind::Drop);
+ let mut rule = get_test_rule();
+ rule.set_expressions(ExpressionList::builder().with_expression(verdict));
+
+ let mut buf = Vec::new();
+ let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
+ assert_eq!(nlmsghdr.nlmsg_len, 104);
+
+ assert_eq!(
+ raw_expr,
+ NetlinkExpr::List(vec![
+ NetlinkExpr::Final(NFTA_RULE_TABLE, TABLE_NAME.as_bytes().to_vec()),
+ NetlinkExpr::Final(NFTA_RULE_CHAIN, CHAIN_NAME.as_bytes().to_vec()),
+ NetlinkExpr::Nested(
+ NFTA_RULE_EXPRESSIONS,
+ vec![NetlinkExpr::Nested(
+ NFTA_LIST_ELEM,
+ vec![
+ NetlinkExpr::Final(NFTA_EXPR_NAME, b"immediate".to_vec()),
+ NetlinkExpr::Nested(
+ NFTA_EXPR_DATA,
+ vec![
+ NetlinkExpr::Final(
+ NFTA_IMMEDIATE_DREG,
+ NFT_REG_VERDICT.to_be_bytes().to_vec()
+ ),
+ NetlinkExpr::Nested(
+ NFTA_IMMEDIATE_DATA,
+ vec![NetlinkExpr::Nested(
+ NFTA_DATA_VERDICT,
+ vec![NetlinkExpr::Final(
+ NFTA_VERDICT_CODE,
+ NF_DROP.to_be_bytes().to_vec()
+ ),]
+ )],
+ ),
+ ]
+ )
+ ]
+ )]
+ )
+ ])
+ .to_raw()
+ );
+}