aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorSimon THOBY <git@nightmared.fr>2023-01-08 22:24:40 +0100
committerSimon THOBY <git@nightmared.fr>2023-01-08 22:28:42 +0100
commitdc3c2ffab697b5d8fce7c69f76528fcfdf2edf38 (patch)
treeaf2dcb95c21a009933492ea80d71b25bdb0e24f6 /src/tests
parent1d68fa40916295465be142b340f1a6381ea079a1 (diff)
rewrite the examples
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/expr.rs46
-rw-r--r--src/tests/mod.rs4
-rw-r--r--src/tests/set.rs19
3 files changed, 33 insertions, 36 deletions
diff --git a/src/tests/expr.rs b/src/tests/expr.rs
index 141f6ac..35c4fea 100644
--- a/src/tests/expr.rs
+++ b/src/tests/expr.rs
@@ -5,21 +5,23 @@ use libc::NF_DROP;
use crate::{
expr::{
Bitwise, Cmp, CmpOp, Conntrack, ConntrackKey, Counter, ExpressionList, HeaderField,
- HighLevelPayload, IcmpCode, Immediate, Log, Masquerade, Meta, MetaType, Nat, NatType,
- Register, Reject, RejectType, TCPHeaderField, TransportHeaderField, VerdictKind,
+ HighLevelPayload, IcmpCode, Immediate, Log, Lookup, Masquerade, Meta, MetaType, Nat,
+ NatType, Register, Reject, RejectType, TCPHeaderField, TransportHeaderField, VerdictKind,
},
+ set::SetBuilder,
sys::{
NFTA_BITWISE_DREG, NFTA_BITWISE_LEN, NFTA_BITWISE_MASK, NFTA_BITWISE_SREG,
NFTA_BITWISE_XOR, NFTA_CMP_DATA, NFTA_CMP_OP, NFTA_CMP_SREG, NFTA_COUNTER_BYTES,
NFTA_COUNTER_PACKETS, NFTA_CT_DREG, NFTA_CT_KEY, 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_CT_STATE, NFT_META_PROTOCOL, NFT_NAT_SNAT, NFT_PAYLOAD_TRANSPORT_HEADER, NFT_REG_1,
- NFT_REG_VERDICT, NFT_REJECT_ICMPX_UNREACH,
+ NFTA_LOG_GROUP, NFTA_LOG_PREFIX, NFTA_LOOKUP_SET, NFTA_LOOKUP_SREG, 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_CT_STATE, NFT_META_PROTOCOL, NFT_NAT_SNAT,
+ NFT_PAYLOAD_TRANSPORT_HEADER, NFT_REG_1, NFT_REG_VERDICT, NFT_REJECT_ICMPX_UNREACH,
},
+ tests::{get_test_table, SET_NAME},
ProtocolFamily,
};
@@ -283,39 +285,40 @@ fn log_expr_is_valid() {
);
}
-/*
#[test]
fn lookup_expr_is_valid() {
- let set_name = &CStr::from_bytes_with_nul(b"mockset\0").unwrap();
- let mut rule = get_test_rule();
- let table = rule.get_chain().get_table();
- let mut set = Set::new(set_name, 0, table);
+ let table = get_test_table();
+ let mut set_builder = SetBuilder::new(SET_NAME, &table).unwrap();
let address: Ipv4Addr = [8, 8, 8, 8].into();
- set.add(&address);
+ set_builder.add(&address);
+ let (set, _set_elements) = set_builder.finish();
let lookup = Lookup::new(&set).unwrap();
- let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg_from_expr(&mut rule, &lookup);
- assert_eq!(nlmsghdr.nlmsg_len, 104);
+
+ let mut rule = get_test_rule().with_expressions(ExpressionList::default().with_value(lookup));
+
+ let mut buf = Vec::new();
+ let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut rule);
+ assert_eq!(nlmsghdr.nlmsg_len, 96);
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::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"lookup\0".to_vec()),
+ NetlinkExpr::Final(NFTA_EXPR_NAME, b"lookup".to_vec()),
NetlinkExpr::Nested(
NFTA_EXPR_DATA,
vec![
+ NetlinkExpr::Final(NFTA_LOOKUP_SET, b"mockset".to_vec()),
NetlinkExpr::Final(
NFTA_LOOKUP_SREG,
NFT_REG_1.to_be_bytes().to_vec()
),
- NetlinkExpr::Final(NFTA_LOOKUP_SET, b"mockset\0".to_vec()),
- NetlinkExpr::Final(NFTA_LOOKUP_SET_ID, 0u32.to_be_bytes().to_vec()),
]
)
]
@@ -325,7 +328,6 @@ fn lookup_expr_is_valid() {
.to_raw()
);
}
-*/
#[test]
fn masquerade_expr_is_valid() {
diff --git a/src/tests/mod.rs b/src/tests/mod.rs
index 3693d35..75fe8b0 100644
--- a/src/tests/mod.rs
+++ b/src/tests/mod.rs
@@ -20,8 +20,6 @@ pub const CHAIN_USERDATA: &'static str = "mockchaindata";
pub const RULE_USERDATA: &'static str = "mockruledata";
pub const SET_USERDATA: &'static str = "mocksetdata";
-pub const SET_ID: u32 = 123456;
-
type NetLinkType = u16;
#[derive(Debug, thiserror::Error)]
@@ -157,7 +155,7 @@ pub fn get_test_rule() -> Rule {
}
pub fn get_test_set<K: DataType>() -> Set {
- SetBuilder::<K>::new(SET_NAME, SET_ID, &get_test_table())
+ SetBuilder::<K>::new(SET_NAME, &get_test_table())
.expect("Couldn't create a set")
.finish()
.0
diff --git a/src/tests/set.rs b/src/tests/set.rs
index db27ced..6c8247c 100644
--- a/src/tests/set.rs
+++ b/src/tests/set.rs
@@ -6,16 +6,16 @@ use crate::{
set::SetBuilder,
sys::{
NFTA_DATA_VALUE, NFTA_LIST_ELEM, NFTA_SET_ELEM_KEY, NFTA_SET_ELEM_LIST_ELEMENTS,
- NFTA_SET_ELEM_LIST_SET, NFTA_SET_ELEM_LIST_TABLE, NFTA_SET_ID, NFTA_SET_KEY_LEN,
- NFTA_SET_KEY_TYPE, NFTA_SET_NAME, NFTA_SET_TABLE, NFTA_SET_USERDATA, NFT_MSG_DELSET,
- NFT_MSG_NEWSET, NFT_MSG_NEWSETELEM,
+ NFTA_SET_ELEM_LIST_SET, NFTA_SET_ELEM_LIST_TABLE, NFTA_SET_KEY_LEN, NFTA_SET_KEY_TYPE,
+ NFTA_SET_NAME, NFTA_SET_TABLE, NFTA_SET_USERDATA, NFT_MSG_DELSET, NFT_MSG_NEWSET,
+ NFT_MSG_NEWSETELEM,
},
MsgType,
};
use super::{
get_test_nlmsg, get_test_nlmsg_with_msg_type, get_test_set, get_test_table, NetlinkExpr,
- SET_ID, SET_NAME, SET_USERDATA, TABLE_NAME,
+ SET_NAME, SET_USERDATA, TABLE_NAME,
};
#[test]
@@ -28,7 +28,7 @@ fn new_empty_set() {
get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
NFT_MSG_NEWSET as u8
);
- assert_eq!(nlmsghdr.nlmsg_len, 88);
+ assert_eq!(nlmsghdr.nlmsg_len, 80);
assert_eq!(
raw_expr,
@@ -37,7 +37,6 @@ fn new_empty_set() {
NetlinkExpr::Final(NFTA_SET_NAME, SET_NAME.as_bytes().to_vec()),
NetlinkExpr::Final(NFTA_SET_KEY_TYPE, Ipv4Addr::TYPE.to_be_bytes().to_vec()),
NetlinkExpr::Final(NFTA_SET_KEY_LEN, Ipv4Addr::LEN.to_be_bytes().to_vec()),
- NetlinkExpr::Final(NFTA_SET_ID, SET_ID.to_be_bytes().to_vec()),
NetlinkExpr::Final(NFTA_SET_USERDATA, SET_USERDATA.as_bytes().to_vec()),
])
.to_raw()
@@ -55,7 +54,7 @@ fn delete_empty_set() {
get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
NFT_MSG_DELSET as u8
);
- assert_eq!(nlmsghdr.nlmsg_len, 88);
+ assert_eq!(nlmsghdr.nlmsg_len, 80);
assert_eq!(
raw_expr,
@@ -64,7 +63,6 @@ fn delete_empty_set() {
NetlinkExpr::Final(NFTA_SET_NAME, SET_NAME.as_bytes().to_vec()),
NetlinkExpr::Final(NFTA_SET_KEY_TYPE, Ipv6Addr::TYPE.to_be_bytes().to_vec()),
NetlinkExpr::Final(NFTA_SET_KEY_LEN, Ipv6Addr::LEN.to_be_bytes().to_vec()),
- NetlinkExpr::Final(NFTA_SET_ID, SET_ID.to_be_bytes().to_vec()),
NetlinkExpr::Final(NFTA_SET_USERDATA, SET_USERDATA.as_bytes().to_vec()),
])
.to_raw()
@@ -75,9 +73,8 @@ fn delete_empty_set() {
fn new_set_with_data() {
let ip1 = Ipv4Addr::new(127, 0, 0, 1);
let ip2 = Ipv4Addr::new(1, 1, 1, 1);
- let mut set_builder =
- SetBuilder::<Ipv4Addr>::new(SET_NAME.to_string(), SET_ID, &get_test_table())
- .expect("Couldn't create a set");
+ let mut set_builder = SetBuilder::<Ipv4Addr>::new(SET_NAME.to_string(), &get_test_table())
+ .expect("Couldn't create a set");
set_builder.add(&ip1);
set_builder.add(&ip2);