aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/expr.rs204
-rw-r--r--tests/lib.rs8
-rw-r--r--tests/rule.rs58
3 files changed, 131 insertions, 139 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()
+ );
+}
diff --git a/tests/lib.rs b/tests/lib.rs
index 4ca75ad..99b5a6a 100644
--- a/tests/lib.rs
+++ b/tests/lib.rs
@@ -1,11 +1,9 @@
#![allow(dead_code)]
use std::ffi::CString;
-use libc::AF_UNIX;
use rustables::nlmsg::{NfNetlinkObject, NfNetlinkWriter};
//use rustables::set::SetKey;
-use rustables::{sys::*, Chain};
-use rustables::{MsgType, ProtocolFamily, Table};
+use rustables::{sys::*, Chain, MsgType, ProtocolFamily, Rule, Table};
//use rustables::{nft_nlmsg_maxsize, Chain, MsgType, NlMsg, Rule, Set, Table};
@@ -159,11 +157,11 @@ pub fn get_test_chain() -> Chain {
Chain::new(&get_test_table()).with_name(CHAIN_NAME)
}
-/*
pub fn get_test_rule() -> Rule {
- Rule::new(Rc::new(get_test_chain()))
+ Rule::new(&get_test_chain()).unwrap()
}
+/*
pub fn get_test_set<T: SetKey>() -> Set<T> {
Set::new(SET_NAME, SET_ID, Rc::new(get_test_table()))
}
diff --git a/tests/rule.rs b/tests/rule.rs
index 376d4d7..f7e23a0 100644
--- a/tests/rule.rs
+++ b/tests/rule.rs
@@ -1,32 +1,32 @@
-//use std::ffi::CStr;
-//
-//mod sys;
-//use rustables::{query::get_operation_from_nlmsghdr_type, MsgType};
-//use sys::*;
-//
-//mod lib;
-//use lib::*;
-//
-//#[test]
-//fn new_empty_rule() {
-// let mut rule = get_test_rule();
-// let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut rule);
-// assert_eq!(
-// get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
-// NFT_MSG_NEWRULE as u8
-// );
-// assert_eq!(nlmsghdr.nlmsg_len, 52);
-//
-// 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()),
-// ])
-// .to_raw()
-// );
-//}
-//
+mod sys;
+use rustables::parser::get_operation_from_nlmsghdr_type;
+use sys::*;
+
+mod lib;
+use lib::*;
+
+#[test]
+fn new_empty_rule() {
+ let mut rule = get_test_rule();
+
+ let mut buf = Vec::new();
+ let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
+ assert_eq!(
+ get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
+ NFT_MSG_NEWRULE as u8
+ );
+ assert_eq!(nlmsghdr.nlmsg_len, 52);
+
+ 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()),
+ ])
+ .to_raw()
+ );
+}
+
//#[test]
//fn new_empty_rule_with_userdata() {
// let mut rule = get_test_rule();