aboutsummaryrefslogtreecommitdiff
path: root/tests/expr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/expr.rs')
-rw-r--r--tests/expr.rs108
1 files changed, 56 insertions, 52 deletions
diff --git a/tests/expr.rs b/tests/expr.rs
index 2d0e12a..3b71c12 100644
--- a/tests/expr.rs
+++ b/tests/expr.rs
@@ -1,17 +1,18 @@
use rustables::{
expr::{
- Bitwise, ExpressionList, HeaderField, HighLevelPayload, IcmpCode, Immediate, Log, Meta,
- MetaType, Nat, NatType, Register, Reject, RejectType, TCPHeaderField, TransportHeaderField,
- VerdictKind,
+ Bitwise, Cmp, CmpOp, ExpressionList, HeaderField, HighLevelPayload, IcmpCode, Immediate,
+ Log, Meta, MetaType, Nat, NatType, Register, Reject, RejectType, TCPHeaderField,
+ TransportHeaderField, VerdictKind,
},
sys::{
NFTA_BITWISE_DREG, NFTA_BITWISE_LEN, NFTA_BITWISE_MASK, NFTA_BITWISE_SREG,
- NFTA_BITWISE_XOR, NFTA_DATA_VALUE, NFTA_DATA_VERDICT, NFTA_EXPR_DATA, NFTA_EXPR_NAME,
- NFTA_IMMEDIATE_DATA, NFTA_IMMEDIATE_DREG, NFTA_LIST_ELEM, NFTA_LOG_GROUP, NFTA_LOG_PREFIX,
- NFTA_META_DREG, NFTA_META_KEY, NFTA_NAT_FAMILY, NFTA_NAT_REG_ADDR_MIN, NFTA_NAT_TYPE,
- NFTA_PAYLOAD_BASE, NFTA_PAYLOAD_DREG, NFTA_PAYLOAD_LEN, NFTA_PAYLOAD_OFFSET,
- NFTA_REJECT_ICMP_CODE, NFTA_REJECT_TYPE, NFTA_RULE_CHAIN, NFTA_RULE_EXPRESSIONS,
- NFTA_RULE_TABLE, NFTA_VERDICT_CODE, NFT_META_PROTOCOL, NFT_NAT_SNAT,
+ NFTA_BITWISE_XOR, NFTA_CMP_DATA, NFTA_CMP_OP, NFTA_CMP_SREG, NFTA_DATA_VALUE,
+ NFTA_DATA_VERDICT, NFTA_EXPR_DATA, NFTA_EXPR_NAME, NFTA_IMMEDIATE_DATA,
+ NFTA_IMMEDIATE_DREG, NFTA_LIST_ELEM, NFTA_LOG_GROUP, NFTA_LOG_PREFIX, NFTA_META_DREG,
+ NFTA_META_KEY, NFTA_NAT_FAMILY, NFTA_NAT_REG_ADDR_MIN, NFTA_NAT_TYPE, NFTA_PAYLOAD_BASE,
+ NFTA_PAYLOAD_DREG, NFTA_PAYLOAD_LEN, NFTA_PAYLOAD_OFFSET, NFTA_REJECT_ICMP_CODE,
+ NFTA_REJECT_TYPE, NFTA_RULE_CHAIN, NFTA_RULE_EXPRESSIONS, NFTA_RULE_TABLE,
+ NFTA_VERDICT_CODE, NFT_CMP_EQ, NFT_META_PROTOCOL, NFT_NAT_SNAT,
NFT_PAYLOAD_TRANSPORT_HEADER, NFT_REG_1, NFT_REG_VERDICT, NFT_REJECT_ICMPX_UNREACH,
},
ProtocolFamily,
@@ -38,7 +39,7 @@ fn bitwise_expr_is_valid() {
let netmask = Ipv4Addr::new(255, 255, 255, 0);
let bitwise = Bitwise::new(netmask.octets(), [0, 0, 0, 0]).unwrap();
let mut rule =
- get_test_rule().with_expressions(ExpressionList::builder().with_expression(bitwise));
+ get_test_rule().with_expressions(ExpressionList::default().with_expression(bitwise));
let mut buf = Vec::new();
let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
@@ -90,44 +91,47 @@ fn bitwise_expr_is_valid() {
.to_raw()
);
}
-//
-//#[test]
-//fn cmp_expr_is_valid() {
-// let cmp = Cmp::new(CmpOp::Eq, 0);
-// let mut rule = get_test_rule();
-// let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg_from_expr(&mut rule, &cmp);
-// 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"cmp\0".to_vec()),
-// NetlinkExpr::Nested(
-// NFTA_EXPR_DATA,
-// vec![
-// NetlinkExpr::Final(NFTA_CMP_SREG, NFT_REG_1.to_be_bytes().to_vec()),
-// NetlinkExpr::Final(NFTA_CMP_OP, NFT_CMP_EQ.to_be_bytes().to_vec()),
-// NetlinkExpr::Nested(
-// NFTA_CMP_DATA,
-// vec![NetlinkExpr::Final(1u16, 0u32.to_be_bytes().to_vec())]
-// )
-// ]
-// )
-// ]
-// )]
-// )
-// ])
-// .to_raw()
-// );
-//}
-//
+
+#[test]
+fn cmp_expr_is_valid() {
+ let val = vec![1u8, 2, 3, 4];
+ let cmp = Cmp::new(CmpOp::Eq, val.clone());
+ let mut rule = get_test_rule().with_expressions(vec![cmp]);
+
+ 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"cmp".to_vec()),
+ NetlinkExpr::Nested(
+ NFTA_EXPR_DATA,
+ vec![
+ NetlinkExpr::Final(NFTA_CMP_SREG, NFT_REG_1.to_be_bytes().to_vec()),
+ NetlinkExpr::Final(NFTA_CMP_OP, NFT_CMP_EQ.to_be_bytes().to_vec()),
+ NetlinkExpr::Nested(
+ NFTA_CMP_DATA,
+ vec![NetlinkExpr::Final(NFTA_DATA_VALUE, val)]
+ )
+ ]
+ )
+ ]
+ )]
+ )
+ ])
+ .to_raw()
+ );
+}
+
//#[test]
//fn counter_expr_is_valid() {
// let nb_bytes = 123456u64;
@@ -212,7 +216,7 @@ fn bitwise_expr_is_valid() {
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));
+ get_test_rule().with_expressions(ExpressionList::default().with_expression(immediate));
let mut buf = Vec::new();
let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
@@ -253,7 +257,7 @@ fn immediate_expr_is_valid() {
#[test]
fn log_expr_is_valid() {
let log = Log::new(Some(1337), Some("mockprefix")).expect("Could not build a log expression");
- let mut rule = get_test_rule().with_expressions(ExpressionList::builder().with_expression(log));
+ let mut rule = get_test_rule().with_expressions(ExpressionList::default().with_expression(log));
let mut buf = Vec::new();
let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
@@ -543,8 +547,8 @@ fn reject_expr_is_valid() {
#[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 rule =
+ get_test_rule().with_expressions(ExpressionList::default().with_expression(verdict));
let mut buf = Vec::new();
let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);