feature: add session monitor, support 'show session id/all/info' command

This commit is contained in:
luwenpeng
2024-11-07 19:12:51 +08:00
parent 50a841919d
commit d0a8685914
10 changed files with 1418 additions and 232 deletions

View File

@@ -108,224 +108,333 @@ TEST(SESS_MGR_SCAN, OPTS)
sess = session_manager_rte_new_session(sess_mgr_rte, &pkt, 4);
EXPECT_TRUE(sess);
struct session_scan_opts scan = {};
// scan.flags = SESSION_SCAN_TYPE | SESSION_SCAN_STATE | SESSION_SCAN_SIP | SESSION_SCAN_DIP | SESSION_SCAN_SPORT | SESSION_SCAN_DPORT | SESSION_SCAN_CREATE_TIME | SESSION_SCAN_LASPKT_TIME;
scan.cursor = 0;
scan.count = 1460;
struct session_filter filter = {};
scan.laspkt_time_ms[0] = 0;
scan.laspkt_time_ms[1] = UINT64_MAX;
/**************************************************************************
* scan session type
**************************************************************************/
// SESSION_SCAN_TYPE
scan.flags = SESSION_SCAN_TYPE;
// TCP
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.type = SESSION_TYPE_TCP;
scan.type = SESSION_TYPE_TCP;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_TYPE: (TCP)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session type: TCP", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.type = SESSION_TYPE_UDP;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// UDP
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.type = SESSION_TYPE_UDP;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_TYPE: (UDP)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session type: UDP", sess_mgr_rte, mached_sess_id, mached_sess_num);
// SESSION_SCAN_STATE
scan.flags = SESSION_SCAN_STATE;
/**************************************************************************
* scan session state
**************************************************************************/
scan.state = SESSION_STATE_OPENING;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// OPENING
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.state = SESSION_STATE_OPENING;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 4);
mached_session_print("SESSION_SCAN_STATE: (OPENING)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session state: OPENING", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.state = SESSION_STATE_ACTIVE;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// ACTIVE
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.state = SESSION_STATE_ACTIVE;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_STATE: (ACTIVE)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session state: ACTIVE", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.state = SESSION_STATE_CLOSING;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// CLOSING
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.state = SESSION_STATE_CLOSING;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_STATE: (CLOSING)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session state: CLOSING", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.state = SESSION_STATE_DISCARD;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// DISCARD
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.state = SESSION_STATE_DISCARD;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_STATE: (DISCARD)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session state: DISCARD", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.state = SESSION_STATE_CLOSED;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// CLOSED
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.state = SESSION_STATE_CLOSED;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_STATE: (CLOSED)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session state: CLOSED", sess_mgr_rte, mached_sess_id, mached_sess_num);
// SESSION_SCAN_SIP
scan.flags = SESSION_SCAN_SIP;
/**************************************************************************
* scan source address
**************************************************************************/
scan.addr_family = AF_INET;
scan.src_addr[0].v4 = v4_src_addr1;
scan.src_addr[1].v4 = v4_src_addr1;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv4
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_family = AF_INET;
filter.src_addr_range[0].v4 = v4_src_addr1;
filter.src_addr_range[1].v4 = v4_src_addr1;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_SIP: (IPv4)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source address: IPv4", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET;
scan.src_addr[0].v4 = v4_src_subnet_beg;
scan.src_addr[1].v4 = v4_src_subnet_end;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv4 subnet
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_family = AF_INET;
filter.src_addr_range[0].v4 = v4_src_subnet_beg;
filter.src_addr_range[1].v4 = v4_src_subnet_end;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_SIP: (IPv4 SUBNET)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source address: IPv4 subnet", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET;
scan.src_addr[0].v4 = v4_min_addr;
scan.src_addr[1].v4 = v4_max_addr;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv4 min max
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_family = AF_INET;
filter.src_addr_range[0].v4 = v4_min_addr;
filter.src_addr_range[1].v4 = v4_max_addr;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_SIP: (IPv4 MIN MAX)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source address: IPv4 min max", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET6;
memcpy(&scan.src_addr[0].v6, &v6_src_addr, sizeof(v6_src_addr));
memcpy(&scan.src_addr[1].v6, &v6_src_addr, sizeof(v6_src_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv6
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_family = AF_INET6;
memcpy(&filter.src_addr_range[0].v6, &v6_src_addr, sizeof(v6_src_addr));
memcpy(&filter.src_addr_range[1].v6, &v6_src_addr, sizeof(v6_src_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_SIP: (IPv6)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source address: IPv6", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET6;
memcpy(&scan.src_addr[0].v6, &v6_src_subnet_beg, sizeof(v6_src_subnet_beg));
memcpy(&scan.src_addr[1].v6, &v6_src_subnet_end, sizeof(v6_src_subnet_end));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv6 subnet
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_family = AF_INET6;
memcpy(&filter.src_addr_range[0].v6, &v6_src_subnet_beg, sizeof(v6_src_subnet_beg));
memcpy(&filter.src_addr_range[1].v6, &v6_src_subnet_end, sizeof(v6_src_subnet_end));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_SIP: (IPv6 SUBNET)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source address: IPv6 subnet", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET6;
memcpy(&scan.src_addr[0].v6, &v6_min_addr, sizeof(v6_min_addr));
memcpy(&scan.src_addr[1].v6, &v6_max_addr, sizeof(v6_max_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv6 min max
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_family = AF_INET6;
memcpy(&filter.src_addr_range[0].v6, &v6_min_addr, sizeof(v6_min_addr));
memcpy(&filter.src_addr_range[1].v6, &v6_max_addr, sizeof(v6_max_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_SIP: (IPv6 MIN MAX)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source address: IPv6 min max", sess_mgr_rte, mached_sess_id, mached_sess_num);
// SESSION_SCAN_DIP
scan.flags = SESSION_SCAN_DIP;
/**************************************************************************
* scan destination address
**************************************************************************/
scan.addr_family = AF_INET;
scan.dst_addr[0].v4 = v4_dst_addr;
scan.dst_addr[1].v4 = v4_dst_addr;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv4
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_family = AF_INET;
filter.dst_addr_range[0].v4 = v4_dst_addr;
filter.dst_addr_range[1].v4 = v4_dst_addr;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_DIP: (IPv4)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination address: IPv4", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET;
scan.dst_addr[0].v4 = v4_dst_subnet_beg;
scan.dst_addr[1].v4 = v4_dst_subnet_end;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv4 subnet
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_family = AF_INET;
filter.dst_addr_range[0].v4 = v4_dst_subnet_beg;
filter.dst_addr_range[1].v4 = v4_dst_subnet_end;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_DIP: (IPv4 SUBNET)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination address: IPv4 subnet", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET;
scan.dst_addr[0].v4 = v4_min_addr;
scan.dst_addr[1].v4 = v4_max_addr;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv4 min max
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_family = AF_INET;
filter.dst_addr_range[0].v4 = v4_min_addr;
filter.dst_addr_range[1].v4 = v4_max_addr;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_DIP: (IPv4 MIN MAX)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination address: IPv4 min max", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET6;
memcpy(&scan.dst_addr[0].v6, &v6_dst_addr, sizeof(v6_dst_addr));
memcpy(&scan.dst_addr[1].v6, &v6_dst_addr, sizeof(v6_dst_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv6
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_family = AF_INET6;
memcpy(&filter.dst_addr_range[0].v6, &v6_dst_addr, sizeof(v6_dst_addr));
memcpy(&filter.dst_addr_range[1].v6, &v6_dst_addr, sizeof(v6_dst_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_DIP: (IPv6)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination address: IPv6", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET6;
memcpy(&scan.dst_addr[0].v6, &v6_dst_subnet_beg, sizeof(v6_dst_subnet_beg));
memcpy(&scan.dst_addr[1].v6, &v6_dst_subnet_end, sizeof(v6_dst_subnet_end));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv6 subnet
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_family = AF_INET6;
memcpy(&filter.dst_addr_range[0].v6, &v6_dst_subnet_beg, sizeof(v6_dst_subnet_beg));
memcpy(&filter.dst_addr_range[1].v6, &v6_dst_subnet_end, sizeof(v6_dst_subnet_end));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_DIP: (IPv6 SUBNET)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination address: IPv6 subnet", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.addr_family = AF_INET6;
memcpy(&scan.dst_addr[0].v6, &v6_min_addr, sizeof(v6_min_addr));
memcpy(&scan.dst_addr[1].v6, &v6_max_addr, sizeof(v6_max_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// IPv6 min max
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_family = AF_INET6;
memcpy(&filter.dst_addr_range[0].v6, &v6_min_addr, sizeof(v6_min_addr));
memcpy(&filter.dst_addr_range[1].v6, &v6_max_addr, sizeof(v6_max_addr));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 1);
mached_session_print("SESSION_SCAN_DIP: (IPv6 MIN MAX)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination address: IPv6 min max", sess_mgr_rte, mached_sess_id, mached_sess_num);
// SESSION_SCAN_SPORT
scan.flags = SESSION_SCAN_SPORT;
/**************************************************************************
* scan source port
**************************************************************************/
scan.src_port = htons(60111);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// hit
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_port = htons(60111);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_SPORT: (HIT)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source port: hit", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.src_port = htons(60110);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// miss
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.src_port = htons(60110);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_SPORT: (MISS)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan source port: miss", sess_mgr_rte, mached_sess_id, mached_sess_num);
// SESSION_SCAN_DPORT
scan.flags = SESSION_SCAN_DPORT;
/**************************************************************************
* scan destination port
**************************************************************************/
scan.dst_port = htons(80);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// hit
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_port = htons(80);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 3);
mached_session_print("SESSION_SCAN_DPORT: (HIT)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination port: hit", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.dst_port = htons(81);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// miss
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.dst_port = htons(81);
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_DPORT: (MISS)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan destination port: miss", sess_mgr_rte, mached_sess_id, mached_sess_num);
// SESSION_SCAN_CREATE_TIME
scan.flags = SESSION_SCAN_CREATE_TIME;
/**************************************************************************
* scan session create time
**************************************************************************/
scan.create_time_ms[0] = 0;
scan.create_time_ms[1] = UINT64_MAX;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
// hit
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.sess_created_ts_in_ms = 1;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 4);
mached_session_print("SESSION_SCAN_CREATE_TIME: (HIT)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session create time: hit", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.create_time_ms[0] = 1;
scan.create_time_ms[1] = 2;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 2);
mached_session_print("SESSION_SCAN_CREATE_TIME: (HIT)", sess_mgr_rte, mached_sess_id, mached_sess_num);
// miss
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.sess_created_ts_in_ms = 5;
scan.create_time_ms[0] = 0;
scan.create_time_ms[1] = 0;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_CREATE_TIME: (MISS)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan session create time: miss", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.create_time_ms[0] = UINT64_MAX;
scan.create_time_ms[1] = UINT64_MAX;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_CREATE_TIME: (MISS)", sess_mgr_rte, mached_sess_id, mached_sess_num);
/**************************************************************************
* scan last packet receive time
**************************************************************************/
// SESSION_SCAN_LASPKT_TIME
scan.flags = SESSION_SCAN_LASPKT_TIME;
// hit
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.pkt_received_ts_in_ms = 1;
scan.laspkt_time_ms[0] = 0;
scan.laspkt_time_ms[1] = UINT64_MAX;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 4);
mached_session_print("SESSION_SCAN_LASPKT_TIME: (HIT)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan last packet receive time: hit", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.laspkt_time_ms[0] = 1;
scan.laspkt_time_ms[1] = 2;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 2);
mached_session_print("SESSION_SCAN_LASPKT_TIME: (HIT)", sess_mgr_rte, mached_sess_id, mached_sess_num);
// miss
memset(&filter, 0, sizeof(filter));
filter.cursor = 0;
filter.count = 1460;
filter.pkt_received_ts_in_ms = 5;
scan.laspkt_time_ms[0] = 0;
scan.laspkt_time_ms[1] = 0;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &filter, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_LASPKT_TIME: (MISS)", sess_mgr_rte, mached_sess_id, mached_sess_num);
scan.laspkt_time_ms[0] = UINT64_MAX;
scan.laspkt_time_ms[1] = UINT64_MAX;
mached_sess_num = session_manager_rte_scan_session(sess_mgr_rte, &scan, mached_sess_id, sizeof(mached_sess_id) / sizeof(mached_sess_id[0]));
EXPECT_TRUE(mached_sess_num == 0);
mached_session_print("SESSION_SCAN_LASPKT_TIME: (MISS)", sess_mgr_rte, mached_sess_id, mached_sess_num);
mached_session_print("scan last packet receive time: miss", sess_mgr_rte, mached_sess_id, mached_sess_num);
session_manager_rte_free(sess_mgr_rte);
}