snowflake changes from global static variables to one instance per thread
This commit is contained in:
@@ -3,10 +3,8 @@
|
||||
#include "tuple.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "tcp_reassembly.h"
|
||||
|
||||
struct session_manager_options opts = {
|
||||
// max session number
|
||||
@@ -48,6 +46,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* case: TCP init -> opening (by TCP Fast Open)
|
||||
******************************************************************************/
|
||||
@@ -310,6 +314,7 @@ TEST(CASE, TCP_FAST_OPEN)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S fast open packet\n");
|
||||
@@ -420,11 +425,6 @@ TEST(CASE, TCP_FAST_OPEN)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "session_private.h"
|
||||
@@ -47,12 +46,18 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
static void packet_set_ip_id(struct packet *pkt, uint16_t ip_id)
|
||||
{
|
||||
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
|
||||
EXPECT_TRUE(ipv4_layer);
|
||||
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
|
||||
ip4_hdr_set_ipid(hdr, ip_id);
|
||||
hdr->ip_id = htons(ip_id);
|
||||
}
|
||||
|
||||
#if 1
|
||||
@@ -65,6 +70,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -131,6 +137,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
@@ -198,6 +205,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -284,6 +292,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYN_DUP)
|
||||
|
||||
mgr = session_manager_new(&_opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -334,6 +343,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYNACK_DUP)
|
||||
|
||||
mgr = session_manager_new(&_opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
@@ -375,4 +385,4 @@ int main(int argc, char **argv)
|
||||
{
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "session_private.h"
|
||||
@@ -48,12 +47,18 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
static void packet_set_ip_src_addr(struct packet *pkt, uint32_t addr)
|
||||
{
|
||||
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
|
||||
EXPECT_TRUE(ipv4_layer);
|
||||
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
|
||||
ip4_hdr_set_src_addr(hdr, addr);
|
||||
hdr->ip_src.s_addr = htonl(addr);
|
||||
}
|
||||
|
||||
#if 1
|
||||
@@ -65,6 +70,7 @@ TEST(TCP_OVERLOAD, EVICT_OLD_SESS)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -106,6 +112,7 @@ TEST(TCP_OVERLOAD, EVICT_NEW_SESS)
|
||||
|
||||
mgr = session_manager_new(&_opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "session_private.h"
|
||||
@@ -48,12 +47,18 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
static void packet_set_ip_src_addr(struct packet *pkt, uint32_t addr)
|
||||
{
|
||||
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
|
||||
EXPECT_TRUE(ipv4_layer);
|
||||
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
|
||||
ip4_hdr_set_src_addr(hdr, addr);
|
||||
hdr->ip_src.s_addr = htonl(addr);
|
||||
}
|
||||
|
||||
#if 1
|
||||
@@ -66,6 +71,7 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S REQ Packet
|
||||
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
|
||||
@@ -155,6 +161,7 @@ TEST(UDP_OVERLOAD, EVICT_NEW_SESS)
|
||||
|
||||
mgr = session_manager_new(&_opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S REQ Packet
|
||||
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "packet_private.h"
|
||||
@@ -47,6 +46,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
static inline void packet_overwrite_src_addr(struct packet *pkt, struct in_addr addr)
|
||||
{
|
||||
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
|
||||
@@ -128,6 +133,7 @@ TEST(SESS_MGR_SCAN, OPTS)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// new session
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
@@ -388,11 +394,6 @@ TEST(SESS_MGR_SCAN, OPTS)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "tcp_reassembly.h"
|
||||
#include "test_packets.h"
|
||||
|
||||
struct session_manager_options opts = {
|
||||
@@ -48,6 +46,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
static void hex_dump(const char *payload, uint32_t len)
|
||||
{
|
||||
printf("Payload Length: %u\n", len);
|
||||
@@ -72,6 +76,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -263,6 +268,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, SEQ_WRAPAROUND)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -350,4 +356,4 @@ int main(int argc, char **argv)
|
||||
{
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "tuple.h"
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -50,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
static void build_active_tcp_session(struct session_manager *mgr, struct session *sess)
|
||||
{
|
||||
struct packet pkt;
|
||||
@@ -94,6 +98,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet & C2S DATA Packet
|
||||
build_active_tcp_session(mgr, sess);
|
||||
@@ -185,6 +190,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet & C2S DATA Packet
|
||||
build_active_tcp_session(mgr, sess);
|
||||
@@ -198,8 +204,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
|
||||
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
|
||||
EXPECT_TRUE(tcp_layer);
|
||||
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
|
||||
tcp_hdr_set_flags(hdr, 0);
|
||||
tcp_hdr_set_rst_flag(hdr, true);
|
||||
hdr->th_flags = TH_RST;
|
||||
printf("<= Packet Parse: done\n\n");
|
||||
|
||||
// lookup session
|
||||
@@ -271,6 +276,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet & C2S DATA Packet
|
||||
build_active_tcp_session(mgr, sess);
|
||||
@@ -284,8 +290,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
|
||||
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
|
||||
EXPECT_TRUE(tcp_layer);
|
||||
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
|
||||
tcp_hdr_set_flags(hdr, 0);
|
||||
tcp_hdr_set_rst_flag(hdr, true);
|
||||
hdr->th_flags = TH_RST;
|
||||
printf("<= Packet Parse: done\n\n");
|
||||
|
||||
// lookup session
|
||||
@@ -355,6 +360,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_DATA_TIMEOUT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet & C2S DATA Packet
|
||||
build_active_tcp_session(mgr, sess);
|
||||
@@ -404,6 +410,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet & C2S DATA Packet
|
||||
build_active_tcp_session(mgr, sess);
|
||||
@@ -483,6 +490,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet & C2S DATA Packet
|
||||
build_active_tcp_session(mgr, sess);
|
||||
@@ -549,11 +557,6 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "tuple.h"
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -50,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* case: TCP init -> opening (by SYN)
|
||||
******************************************************************************/
|
||||
@@ -65,6 +69,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -142,6 +147,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
@@ -219,6 +225,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -308,6 +315,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -411,6 +419,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -432,7 +441,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
|
||||
packet_parse(&pkt, (const char *)syn_retransmission, sizeof(tcp_pkt1_c2s_syn));
|
||||
const struct layer_private *ipv4_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_IPV4);
|
||||
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
|
||||
ip4_hdr_set_ipid(hdr, 0x1234);
|
||||
hdr->ip_id = htons(0x1234);
|
||||
printf("<= Packet Parse: done\n\n");
|
||||
|
||||
// lookup session
|
||||
@@ -507,6 +516,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
@@ -529,7 +539,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
|
||||
const struct layer_private *ipv4_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_IPV4);
|
||||
EXPECT_TRUE(ipv4_layer);
|
||||
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
|
||||
ip4_hdr_set_ipid(hdr, 0x1234);
|
||||
hdr->ip_id = htons(0x1234);
|
||||
printf("<= Packet Parse: done\n\n");
|
||||
|
||||
// lookup session
|
||||
@@ -602,6 +612,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -691,6 +702,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
@@ -767,11 +779,6 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "tuple.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
#if 1
|
||||
TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
{
|
||||
@@ -60,6 +65,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -433,11 +439,6 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "tuple.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* case: TCP opening -> active (by C2S DATA)
|
||||
******************************************************************************/
|
||||
@@ -64,6 +69,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -153,6 +159,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
@@ -229,11 +236,6 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "tuple.h"
|
||||
#include "packet_helper.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -50,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* case: TCP opening -> closing (by FIN-FIN)
|
||||
******************************************************************************/
|
||||
@@ -65,6 +69,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -165,6 +170,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -187,8 +193,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
|
||||
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
|
||||
EXPECT_TRUE(tcp_layer);
|
||||
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
|
||||
tcp_hdr_set_flags(hdr, 0);
|
||||
tcp_hdr_set_rst_flag(hdr, true);
|
||||
hdr->th_flags = TH_RST;
|
||||
printf("<= Packet Parse: done\n\n");
|
||||
|
||||
// lookup session
|
||||
@@ -260,6 +265,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -282,8 +288,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
|
||||
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
|
||||
EXPECT_TRUE(tcp_layer);
|
||||
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
|
||||
tcp_hdr_set_flags(hdr, 0);
|
||||
tcp_hdr_set_rst_flag(hdr, true);
|
||||
hdr->th_flags = TH_RST;
|
||||
printf("<= Packet Parse: done\n\n");
|
||||
|
||||
// lookup session
|
||||
@@ -354,6 +359,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_INIT_TIMEOUT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -412,6 +418,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -501,6 +508,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -602,6 +610,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -690,6 +699,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
@@ -765,11 +775,6 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "tuple.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
#if 1
|
||||
TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
|
||||
{
|
||||
@@ -60,6 +65,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S REQ Packet
|
||||
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
|
||||
@@ -154,11 +160,6 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "tuple.h"
|
||||
#include "packet_private.h"
|
||||
#include "packet_parser.h"
|
||||
#include "snowflake.h"
|
||||
#include "session_private.h"
|
||||
#include "session_manager.h"
|
||||
#include "test_packets.h"
|
||||
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* case: UDP init -> opening (by C2S Packet)
|
||||
* case: UDP opening -> closing (by timeout)
|
||||
@@ -65,6 +70,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S REQ Packet
|
||||
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
|
||||
@@ -143,6 +149,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C RESP Packet
|
||||
printf("\n=> Packet Parse: UDP S2C RESP packet\n");
|
||||
@@ -209,11 +216,6 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct snowflake_options opt = {
|
||||
.snowflake_base = 1,
|
||||
.snowflake_offset = 2,
|
||||
};
|
||||
snowflake_id_init(&opt);
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
#if 1
|
||||
TEST(TIMEOUT, TCP_TIMEOUT_DATA)
|
||||
{
|
||||
@@ -56,6 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_DATA)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
|
||||
@@ -47,6 +47,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
#if 1
|
||||
TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE)
|
||||
{
|
||||
@@ -56,6 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// S2C SYNACK Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
|
||||
|
||||
@@ -47,6 +47,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
#if 1
|
||||
TEST(TIMEOUT, TCP_TIMEOUT_INIT)
|
||||
{
|
||||
@@ -56,6 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_INIT)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S SYN Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
|
||||
|
||||
@@ -47,6 +47,12 @@ struct session_manager_options opts = {
|
||||
.tcp_reassembly_max_segments = 16,
|
||||
};
|
||||
|
||||
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
|
||||
{
|
||||
static uint64_t count = 0;
|
||||
return (++count);
|
||||
}
|
||||
|
||||
#if 1
|
||||
TEST(TIMEOUT, UDP_TIMEOUT_DATA1)
|
||||
{
|
||||
@@ -56,6 +62,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA1)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S REQ Packet
|
||||
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
|
||||
@@ -92,6 +99,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA2)
|
||||
|
||||
mgr = session_manager_new(&opts, 1);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
session_manager_set_session_id_generator(mgr, session_id_generator);
|
||||
|
||||
// C2S REQ Packet
|
||||
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
|
||||
|
||||
Reference in New Issue
Block a user